mysql数据与Hadoop之间导入导出之Sqoop实例
2017-06-26 08:42
537 查看
前面介绍了sqoop1.4.6的 如何将mysql数据导入Hadoop之Sqoop安装,下面就介绍两者间的数据互通的简单使用命令。
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
注意:--target-dir/hive/warehouse/WorkTable2 可以用 --hive-import --hive-table WorkTable2 进行替换
从上面的信息可以看到sqoop还是走的hadoop的M/R引擎。
以上只是一些经过验证通过的简单的示例,更复杂的有待后续补充。
显示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中
sqoop import --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
sqoop import --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 语句使用
sqoop import --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 语句使用
sqoop import --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引擎。
以上只是一些经过验证通过的简单的示例,更复杂的有待后续补充。
相关文章推荐
- Hadoop Hive概念学习系列之HDFS、Hive、MySQL、Sqoop之间的数据导入导出(强烈建议去看)(十八)
- 用Sqoop2在Mysql和hadoop导入导出数据
- sqoop-1.4.4导入导出mysql数据到hadoop2.2.0 HDSF集群
- 大数据基础(二)hadoop, mave, hbase, hive, sqoop在ubuntu 14.04.04下的安装和sqoop与hdfs,hive,mysql导入导出
- 利用sqoop将hive数据导入导出数据到mysql
- Sqoop2 从MySQL导入数据到Hadoop HDFS
- hadoop学习之-Sqoop与关数据库(mysql)之间导入实践
- 利用sqoop将hive数据导入导出数据到mysql
- sqoop:mysql和Hbase/Hive/Hdfs之间相互导入数据
- Hadoop数据工具sqoop,导入HDFS,HIVE,HBASE,导出到oracle
- 使用sqoop将mysql数据导入到hadoop
- sqoop:mysql和Hbase/Hive/Hdfs之间相互导入数据
- sqoop1.4.4导出mysql数据到hadoop1.2.1集群出现的问题
- Hadoop之Sqoop导出hdfs数据到Mysql
- 将mongodb 数据指定字段导出,然后指定字段导入mysql 实例 及相关问题解决
- hadoop平台下的数据导入导出工具Sqoop
- 利用sqoop将hive数据导入导出数据到mysql
- Sqoop -- 用于Hadoop与关系数据库间数据导入导出工作的工具
- Sqoop_详细总结 使用Sqoop将HDFS/Hive/HBase与MySQL/Oracle中的数据相互导入、导出
- Sqoop java接口将MySQL数据导入导出HDFS及BUG