[HBase运维]使用importTSV导入tsv文件到HBase表中

996 阅读1分钟

起因

在日常操作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还有多种入库方式,欢迎关注我,后续分享更多关于大数据的实践。