MySQL 同步hive 实时性_从MySQL同步数据到Hive的操作参数解析

: 指定导入数据的hdfs路径–目标路径

–query :从查询结果中导入数据,与–target-dir共用

–hive-table:导入的hive表

–hive-database:导入的hive库

–where :从关系型数据库导入数据时的查询条件,接where的查询条件。例如:‘–where id<100’

–null-non-string:指定非字符串类型为null时的替代字符

–null-string:指定字符串类型为null时的替代字符

–hive-drop-import-delims:导入数据到hive时,屏蔽数据中\n,\r和\01等类型的特殊字符

–hive-overwrite:导入前清理hive表中所有数据

–hive-partition-key: hive表的分区字段,字段类型默认为string

–hive-partition-value:与–hive-partition-key同时使用,指定导入的分区值

–fields-terminated-by :指定导入数据的字段分隔符

–lines-terminated-by :指定导入数据的行分隔符

–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-keytime–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:–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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值