美文网首页大数据大数据,机器学习,人工智能互联网科技
mysql数据与Hadoop之间导入导出之Sqoop实例

mysql数据与Hadoop之间导入导出之Sqoop实例

作者: 欢醉 | 来源:发表于2017-06-26 08:56 被阅读178次

前面介绍了sqoop1.4.6的如何将mysql数据导入Hadoop之Sqoop安装,下面就介绍两者间的数据互通的简单使用命令。

显示mysql数据库的信息,一般sqoop安装测试用

sqoop list-databases --connect jdbc:mysql://192.168.2.101:3306/ --username root --password root

显示数据库里所有表:

sqoop list-tables --connectjdbc:mysql://192.168.2.101:3306/FlowDB --username root -password root

mysql导入到hdfs中

sqoopimport--connect jdbc:mysql://192.168.2.101:3306/FlowDB --username root --password root --table WorkTable --fields-terminated-by'\t'-m 1

sqoop ##sqoop命令

import ##表示导入

--connect jdbc:mysql://ip:3306/sqoop ##告诉jdbc,连接mysql的url

--username root ##连接mysql的用户名

--password admin ##连接mysql的密码

--table aa ##从mysql导出的表名称

--fields-terminated-by '\t' ##指定输出文件中的行的字段分隔符

--target-dir/user/hadoop/databases/ssa/fin_cashier_order

-m 1 ##复制过程使用1个map作业

若是不写--target-dir 则默认是hdfs上的user/username/tablename 路径

如果重复执行,会提示目录已经存在,可以手动删除

该命令执行结束后,观察hdfs的目录/user/{USER_NAME},下面会有一个文件夹是aa,里面有个文件是part-m-00000。该文件的内容就是数据表aa的内容,字段之间是使用制表符分割的。

查看HDFS上的文件

hadoop fs -cat /user/jzyc/WorkTable/part-m-00000

hdfs导出到mysql中

把上一步导入到hdfs的数据导出到mysql中。我们已知使用制表符分隔的。那么,我们现在数据库FlowDB中创建一个数据表叫做WorkTable_hdfs,里面有两个字段。然后执行下面的命令

sqoop export --connect jdbc:mysql://192.168.2.101:3306/FlowDB --table WorkTable_hdfs --username root --password root --export-dir /user/jzyc/WorkTable/ --input-fields-terminated-by'\t'

sqoop导入视图到hdfs

sqoopimport--connect jdbc:mysql://192.168.2.101:3306/FlowDB --username root --password root--query'SELECT * FROM view_WorkTable WHERE \$CONDITIONS'-m 1 target-dir /user/jzyc/WorkTable --delete-target-dir --fields-terminated-by","

将数据从关系数据库导入文件到hive表中,--query 语句使用

sqoopimport--append --connect jdbc:mysql://192.168.2.101:3306/FlowDB --username root --password root --query"SELECT ID,Classify,Name,ModelType,CreateDate,CreateUserID,DesignJSON,Status from WorkTable where \$CONDITIONS"-m 1 --target-dir /hive/warehouse/WorkTable --fields-terminated-by","

将数据从关系数据库导入文件到hive表中,--columns --where 语句使用

sqoopimport--append --connect jdbc:mysql://192.168.2.101:3306/FlowDB --username root --password root --table WorkTable --columns"ID,Classify,Name,ModelType,CreateDate,CreateUserID"--where"Classify = 1"-m 1 --target-dir /hive/warehouse/WorkTable2 --fields-terminated-by","

注意:--target-dir/hive/warehouse/WorkTable2 可以用 --hive-import --hive-table WorkTable2 进行替换

从上面的信息可以看到sqoop还是走的hadoop的M/R引擎。

以上只是一些经过验证通过的简单的示例,更复杂的有待后续补充。

相关文章

网友评论

  • 孔夫子2016:Sqoop1.99版本不一样了,更新更多。
    欢醉:@孔夫子2016 是的 我是基于sqoop1做的
    欢醉:@孔夫子2016 是不一样,支持集群,试了 但中间创建job总出问题
  • 5d31bf8932f3:很实用,谢谢分享
    欢醉:@G哥97 可以作为备忘

本文标题:mysql数据与Hadoop之间导入导出之Sqoop实例

本文链接:https://www.haomeiwen.com/subject/eledcxtx.html