sqoop从关系型数据库导数据到hbase
导入过程中,如果发现表示联合主键,则sqoop会将主键的这几个字段用短下划线拼接成hbase的rowkey,然后将剩余部分作为该行的cell存入hbase中。但是如果我们需要将这些作为主键的字段冗余存入cell,则需要进行简单的配置。 对于这种情况出现的原因是,有时我们会用hive建立外部表与hbase表关联,后续进行LADP。
在$SQOOP_HOME/sqoop-site.xml中加入如下配置项:
方法二:
在sqoop命令行中加入 -D propertyname=propertyvalue来修改配置参数
注意:要将这个写到import后面
例如:
sqoop import -D sqoop.hbase.add.row.key=true \
--connect jdbc:oracle:thin:@10.31.57.57:1521/orcl \
--username csamp \
--password Oracle1234 \
--table COEF_LV_SET \
--hbase-create-table \
--hbase-table coef_lv_set_for_c_pr028 \
--hbase-row-key COEF_CODE,RANGE_START,RANGE_END \
--column-family ci
sqoop import --connect "jdbc:oracle:thin:@10.253.128.202/orcl"
--username product
--password product
--query "select distinct t.pol_code||'~'||t.insur_year||'~'||t.pay_itrvl_code||'~'||t.sex||'~'||t.appl_age||'~'||t.insur_dur||'~'||t.moneyin_dur||'~'||t.ann_draw_age||'~'||t.ann_itrvl||'~'||t.ann_incr_pct||'~'||t.occ_class_no
as NEWKEY,t.* from ipb_l_reserve t where \$CONDITIONS"
--hbase-table ipb_l_reserve
--column-family ci
--hbase-create-table
--hbase-row-key NEWKEY
--split-by pol_code
sqoop import --connect jdbc:oracle:thin:@10.31.57.57:1521/orcl \
--username csamp \
--password Oracle1234 \
--query "select t.COEF_CODE||'~'||t.RANGE_START||'~'||t.RANGE_END as "NEWKEY",t.* from COEF_LV_SET t where \$CONDITIONS" \
--hbase-table gy.cntr_items \
--hbase-create-table \
--hbase-row-key NEWKEY \
--column-family ci \
--m 1