Sqoop的使用(Mysql To HBase)

最近需要将mysql的数据整合到HBase中,原本使用MapReduce,自己制作job将mysql的数据导入,

查阅资料过程中,发现了开源工具sqoop(关系性数据库与HDFS,HBASE,HIVE等)互相导入的工具,

于是准备尝试使用,看是否能够满足目前数据转移的需求。

sqoop import --connect jdbc:mysql://192.168.100.**/database --username user -P --table information --hbase-table information --column-family info --hbase-row-key market,label --columns market,label,name,py --hbase-create-table -m 1

--hbase-row-key market,label这个命令可以产生market_label格式的rowkey

采用命令的方式

sqoop import --connect jdbc:mysql://192.168.100.**/database --username user -P --query 'select a.market, a.label, DATE_FORMAT(b.datetime,"%Y%m%d%H%i%s") as time, b.open, b.high, b.low, b.close, b.volume, b.amount, b.advance, b.decline, b.position, b.turnover, b.openvolume, b.openamount from stockdata_history_dayone as b join stock_information as a on a.stockid = b.stockid where $CONDITIONS limit 10' --hbase-table stockdata_history_dayone --column-family info --hbase-row-key market,label,time --hbase-create-table -m 1

问题1:

ERROR security.UserGroupInformation: PriviledgedActionException ...

导致这个问题,主要是权限问题,使用的user没有在目标路径下创建有权限的文件夹

sudo -u hdfs hadoop fs -mkdir /user/user

sudo -u hdfs hadoop fs -chown user:user /user/user

(/user文件夹是在sqoop没有指明文件路径情况下的默认路径)

问题2:

Could not insert row with null value for row-key column:

这个问题,可能是由于使用的问题,在columns中需要指明row-key用到的列

原文地址:https://www.cnblogs.com/tyoyi/p/4517835.html