sqoop从mysql向hbase拼接行键

转自:https://blog.csdn.net/jsky_studio/article/details/50626056

 

<1> 创建一张临时表 system_log_tmp

        CREATE TABLE system_log_tmp LIKE system_log;

<2> 将昨日增量数据copy至该临时表

         INSERT system_log_Tmp SELECT * FROM system_log 

<3> 给临时表添加新列 hbase_row_key

        ALTER  TABLE  system_log_tmp  ADD COLUMN hbase_row_key   varchar(256)

<4> 在临时表中通过拼接对应三列来补全新列内容(为方便查询,ID字段统一为11位,不够右侧补零;为节省空间,mytime字段改为20151212121212样式)

        UPDATE system_log_tmp  SET  hbase_row_key=concat( type, ':', date_format(time, '%Y%m%d%H%i%s'),  ':',  right(  concat('000000000000', id), 12))

<5> 运行sqoop命令,将数据从临时表导入hbase: 

       shell>sqoop  import  --connect  jdbc:mysql://node01:3306/unicode  --table  unicode   --hbase-table   unicode 

--column-family  cf     --hbase-row-key  hbase_row_key  --hbase-create-table   --username 'root'  -P;

   建议现在HBase上建好表

-------------------------------------------------------------------------------------------------------------------------------

转自:https://blog.csdn.net/huanggang028/article/details/39205769

 

导入过程中,如果发现表示联合主键,则sqoop会将主键的这几个字段用短下划线拼接成hbase的rowkey,然后将剩余部分作为该行的cell存入hbase中。但是如果我们需要将这些作为主键的字段冗余存入cell,则需要进行简单的配置。 对于这种情况出现的原因是,有时我们会用hive建立外部表与hbase表关联,后续进行LADP。

在$SQOOP_HOME/sqoop-site.xml中加入如下配置项: