概述
参数解析:
必选参数
--connect :连接的mysql数据库的jdbc信息
--username:mysql数据库的登录账户
--password:mysql数据库的登录密码
--table: 关系数据库表名
--hive-import: 从关系型数据库向hive中导入数据的标志
可选参数
--as-testfile: 将数据导入一个普通文本文件中
--as-sequencefile:将数据导入一个
--as-avrodatafile:将数据导入一个Avro数据文件中
--columns<cl,col,col,...> 指定要导入的字段值
-m或--num-mappers:确定导入数据时启动的并行map数,默认为4
--target-dir<dir>: 指定导入数据的hdfs路径--目标路径
--query <selectstatement>:从查询结果中导入数据,与--target-dir共用
--hive-table:导入的hive表
--hive-database:导入的hive库
--where :从关系型数据库导入数据时的查询条件,接where的查询条件。例如:‘–where id<100’
--null-non-string<null-string>:指定非字符串类型为null时的替代字符
--null-string<null-string>:指定字符串类型为null时的替代字符
--hive-drop-import-delims:导入数据到hive时,屏蔽数据中n,r和 1等类型的特殊字符
--hive-overwrite:导入前清理hive表中所有数据
--hive-partition-key<k> : hive表的分区字段,字段类型默认为string
--hive-partition-value<v>:与--hive-partition-key同时使用,指定导入的分区值
--fields-terminated-by <f> :指定导入数据的字段分隔符
--lines-terminated-by <l>:指定导入数据的行分隔符
--delete-target-dir:若指定的目录存在,需要先删除
--split-by:指定数据集分片的字段
解析
原理
sqoop将数据从关系型数据库mysql导入到haooop数据库hive,整体步骤分为两步:
1.将mysql中数据导入hadoop的hdfs上
2.将hadoop的hdfs上的数据加载到hive数据库中
使用方法:
根据sqoop的工作原理,使用sqoop导入数据,主要有两种方法:
方法1(直接导入):将mysql数据直接导入hive表中
方法2(导入hdfs):先将mysql数据导入hdfs上,之后再将hdfs数据加载到hive中
直接导入典型示例:
sqoop import --connect jdbc:mysql://localhost:3306/bdp --username root --password bdp --table emp --hive-import --hive-database test --hive-table EMP --where 'id>10' --hive-partition-key time --hive-partition-value '2018-05-18' --null-string '\N' --null-non-string '\N' --fields-terminated-by ',' --lines-terminated-by 'n' -m 1
导入hdfs典型示例:
导入数据到hdfs:
sqoop import --connect jdbc:mysql://localhost:3306/bdp --username root --password bdp --table emp --query 'select * from emp inner join user on emp.id=user.id where id>10' --split-by id --target-dir /user/data/mysql/emp -m 1
加载数据到hive表:
load data inpath '/user/data/mysql/emp ' into table test.EMP2
分析:
直接导入适用于将单个表中部分数据或所有数据导入hive表中的情况。
导入hdfs适用于将组合数据集导入hive表中的情况。--query参数可以对多个mysql表join后的数据集进行筛选,该方法可以将指定的数据集(可能涉及多张表)导入hdfs,并不限于单张表。
注意事项:
1.注意字段分隔符和行分隔符的使用,必须与目标hive表一致,否则将出现,数据导入成功,但无法正常加载到hive表(hive表中字段值为null)
2.–columns接的字段时mysql表的字段,要求这些字段要和Hive表中的字段对应,数据类型要对应,否则会出现异常
3.--hive-table中只支持一个静态分区,匹配的分区参数为--hive-partition-key和--hive-partition-value。多分区时,对应的参数应该为--hcatalog-table,--hcatalog-database,--hcatalog-partition-keys和--hcatalog-partition-values
4.hive没有rowkey,sqoop-hive只能追加或者清空后再添加,不能update
最后
以上就是个性钢笔为你收集整理的【Sqoop】从MySQL同步数据到Hive的操作参数解析的全部内容,希望文章能够帮你解决【Sqoop】从MySQL同步数据到Hive的操作参数解析所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复