前面介绍了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引擎。
以上只是一些经过验证通过的简单的示例,更复杂的有待后续补充。