转自: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中加入如下配置项: