sqoop导入数据到Hbase,作为行键的字段不会存入列簇里

Hbase建表

hbase shell>create 'AC01YS_1_10W', 'COLUMN'

sqoop导入数据到Hbase

sqoop import --connect jdbc:oracle:thin:@//ip:host/ORCLPDB1 --username [username] --password [password] --query "SELECT AAC001, AAC002, AAC003, AAC004, AAC005, AAC006, AAC007,  FROM AC01YS WHERE \$CONDITIONS" --hbase-create-table --hbase-table AC01YS --column-family COLUMN --hbase-row-key AAC002,AAC003 -m 1;

Hbase的数据是AAC002,AAC003作为行键,下划线连接这两个字段,但是列簇里并没有AAC002和AAC003这两个字段了,有时候还需要用到这两个字段,比如要创建Hive的分区表

CREATE EXTERNAL TABLE external_hbase.ac01ys( AAC001 DECIMAL(20) COMMENT '人员id', AAC002 VARCHAR(20) COMMENT '公民身份号码', AAC003 VARCHAR(50) COMMENT '姓名', AAC004 VARCHAR(2) COMMENT '性别', AAC005 VARCHAR(2) COMMENT '民族', AAC006 DECIMAL(8) COMMENT '出生日期', AAC007 DECIMAL(8) COMMENT '参加工作日期') STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping" = "COLUMN:AAC001,:key,COLUMN:AAC004,COLUMN:AAC005,COLUMN:AAC006,COLUMN:AAC007") TBLPROPERTIES("hbase.table.name" = "AC01YS");

上面创建Hive外部表会报错的,因为Hive外部表字段数和Hbase不一致。

在sqoop-site.xml中加入配置项:

<property>
    <name>sqoop.hbase.add.row.key</name>
    <value>true</value>
</property>

重新导入数据到Hbase表,就能看到Hbase表有AAC002和AAC003字段了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值