hbase数据导入

使用命令bin/hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.columns=HBASE_ROW_KEY,cf:a,cf:b,cf:c 需要指出的是源文件默认以” “为分割符,如果需要换成其它分割符,在执行时加上-Dimporttsv.separator=”,”,则变成了以”,”分割
这个工具是使用map/reduce方式来进行数据导入的。map的数量取决于你目录下面文件的数量。




bulkload和上面的map/reduce的在线Put方式一样

大数据量
bulkload.方式导入

执行命令: bin/hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.bulk.output=hdfs://storefile-outputdir -Dimporttsv.columns=HBASE_ROW_KEY,cf:a,cf:b,cf:c
需要你指定一个hdfs路径。来保存你生成的HFile文件。 这时候如果这些HFile所在HDFS和你的hbase集群用到的HDFS集群是同一个的话。那么你就可以执行bin/hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles 完成整个过程




$ bin/hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.columns=a,b,c $ bin/hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.columns=a,b,c -Dimporttsv.bulk.output=hdfs://storefile-outputdir

hbase提供了这两种方式进行导入.可以看到只是一个importtsv.bulk.output参数上的差别。内部的实现确实千差万别。
【hbase数据导入】 上面的那个命令是在map的时候输出Put. reduce的时候直接把put提交
下面那个在map时候做的事情一样。在reduce的时候就是通过HFileOutputFormat把KeyValues输出到HFile
但是下面的方式还有一个不走就是complete.就是将之前生成的HFile文件导入到region中。分布还是比较均匀的


    推荐阅读