sqoop从mysql导入数据到hive

针对全量导入,先来个常用配置:
./sqoop import -m 1
--outdir /home/hadoop/bigdata/sqoop/outdir
--connect jdbc:mysql://hupz.cn:3306/dispy_stg2?characterEncoding=UTF-8
--username root --password *
--split-by id
--table security_userprofile
--columns id,mobile,user_id,fullname
--delete-target-dir
--target-dir /user/sqoop/ods/ods_security_userprofile
--fields-terminated-by "01"
--null-non-string 'N'
--null-string 'N'
--fetch-size 5000
--hive-import
--hive-overwrite
--hive-table ods.ods_security_userprofile

参数
-m 1 表示划分成的map任务的数量,影响连接到mysql的并发数量
--split-by id 根据哪个字段来划分每个任务的熟练,分散度越高越好,比如主键字段。但是如果表没有主键,如何办呢?
在导入Oracle时,可以通过 Data Connector for hadoop and Oracle进行抽取,任务将按照rownum划分并进行抽取。
但导入MySQL的情况还没确认。待查。

如果没有数值类型的字段用于split-by,选择字符型时,需要增加参数:"-Dorg.apache.sqoop.splitter.allow_text_splitter=true",否则会报错。

未决问题:
--append 用途?
--split-limit 如何配置?

参考文档:
https://www.cnblogs.com/hupingzhi/p/12358137.html

原文地址:https://www.cnblogs.com/hupingzhi/p/12358137.html