起因
在日常操作HBase的过程中,存在一些业务会把tsv文件导入到对应的HBase的要求,例如某个业务每天定期从数据库导出数据,我们负责接受到任务后,导入到对应的HBase表,上游再根据我们提供接口进行查询,导入流程如下:
db ---> file.csv ---> HBase 集群
用户查询流程如下:
ndoe.js --> rest(hbase自带服务) --> HBase 集群
使ImportTsv用命令 导入数据
ImportTsv 是 HBase 本身自带的讲tsv文件导入到HBase中指定表的工具,原理是使用MapReduce读取HDFS上的文件,使用客户端写到到HBase中的表,用法如下:
hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.columns=a,b,c <tablename> <inputdir>
-Dimporttsv.columns 指定的是tsv文件里面的那些列需要导入到HBase,例如
-Dimporttsv.columns=HBASE_ROW_KEY,info:TradingDate,info:OpenPrice
参数里面要求tsv文件里面必须有一列名为HBASE_ROW_KEY,这一列最终是作为HBase里面的rowkey。TradingDate和OpenPrice是tsv文件里面的列名,info是HBase里面的列族,这个配置可以针对不同的列设置不同的列族,毕竟HBase是一个多列族的数据库。
其他参数
除了上面最关键的一个属性之外,ImportTsv还有以下2个属性,需要关注。
-Dimporttsv.separator= 如果不是用tab分割的话,需要指定分割符
-Dimporttsv.timestamp= 指定时间戳
其他用户可以直接使用,查看解释。
hbase org.apache.hadoop.hbase.mapreduce.ImportTsv
HBase还有多种入库方式,欢迎关注我,后续分享更多关于大数据的实践。