sqoop

sqoop底层原理是mapreduce,只不过没有聚合过程,故只有map任务

sqoop数据导入(mysql->hdfs)功能:
全表导入
sqoop import \ /* ''表示语句没有结束,换行 */
–connect jdbc:mysql://192.168.19.1:3306/imooc?serverTimezone=UTC \ /指定链接地址/
–username root
–password admin
–table user \ 从哪个表中取数据
–target-dir /out \ 放到hdfs哪个目录中
–delete-target-dir \ 如输出目录存在,把他删除
–num-mappers 1 \ 最终生成mapper任务数量,默认是4个
–fields-terminated-by ‘\t’ 分隔符

–split-by id 根据id切分任务

查询导入
查询语句过滤数据后导入
sqoop import \ /* ''表示语句没有结束,换行 */
–connect jdbc:mysqll://192.168.182.1:3306/imooc?serverTimezone=UTC \ /指定链接地址/
–username root
–password admin
–target-dir /out2 \ 放到hdfs哪个目录中
–delete-target-dir \ 如输出目录存在,把他删除
–num-mappers 1 \ 最终生成mapper任务数量,默认是4个
–fields-terminated-by ‘\t’ \ 分隔符
–query ‘select * from t1 where id > 1 and $CONDITIONS’ 为了多个map任务并行处理时不重复处理数据

sqoop import --connect jdbc:mysql://192.168.19.1:3306/mysql?serverTimezone=UTC --username root --password 123456 --table t1 --target-dir /out1 --num-mappers 1 --fields-terminated-by ‘\t’

数据导出
sqoop export
–connect jdbc:mysql://192.168.182.2:3306/imooc?serverTimezone=UTC
–username root
–password admin
–table user2
–export-dir /out2
–input-fields-terminated-by ‘\t’
–update-key id
–update-mode allowinsert
存在则更新,不存在则插入

sqoop export --connect jdbc:mysql://192.168.182.2:3306/mysql?serverTimezone=UTC --username root --password 123456 --table t2 --export-dir /out2 --input-fields-terminated-by ‘\t’ --update-key id --update-mode allowinsert

你可能感兴趣的:(sqoop)