sqoop 使用笔记
sqoop概念
将导入或导出命令翻译成mapreduce程序来实现
在翻译出的mapreduce中主要是对inputformat和outputformat进行定制
sqoop import 工具
“导入工具”导入单个表从RDBMS到HDFS。表中的每一行被视为HDFS的记录。所有记录都存储为文本文件的文本数据(或者Avro、sequence文件等二进制数据)
bin/sqoop import \
--connect jdbc:mysql:/ \
--username \
--password \
--table emp --m 1 \ 用一个map任务完成 如果是多个需要用 spilt-by 切分, 切分字段为int
--target-dir /emp_append \
--incremental append \ 增量导入
--check-column id \ 从这个id 开始
--last-value 1203
sqoop export 工具
将数据从HDFS导出到RDBMS数据库
导出前,目标表必须存在于目标数据库中。
- 默认操作是从将文件中的数据使用INSERT语句插入到表中
- 更新模式下,是生成UPDATE语句更新表数据
bin/sqoop export \
--connect jdbc:mysql:// \
--username \
--password \
--table emp_conn_from_hdfs \
--export-dir /user/root/emp_conn \
--m 1
sqoop从mysql导入到hive
需要安装 Hcatlog 跨数据处理工具,抽象出表,而不必关心数据时怎样存储的
sqoop import --connect jdbc:mysql:// --username --password --table --hive-import 导入到hive --hive-database 指定hive数据库 --hive-overwrite 覆盖 --create-hive-table 创建hive表 --hive-table 使用hive表 --delete-target-dir 删除中间目录
sqoop job任务
- create job
bin/sqoop job --create myjob -- import --connect jdbc:mysql:// --username --password --table emp_conn_from_hdfs --m 1
- sqoop job –list
- sqoop job –show myjobe
- sqoop job –exec myjob
sqoop注意点
导入hive 对null 字符串的处理,hive存储null 使用的是 \n
--null-string '\N'
--null-non-string '\N'