admin管理员组

文章数量:1576258

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



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 <tablename> <hdfs-inputdir>

需要你指定一个hdfs路径。来保存你生成的HFile文件。 这时候如果这些HFile所在HDFS和你的hbase集群用到的HDFS集群是同一个的话。那么你就可以执行bin/hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles <hdfs://storefileoutput> <tablename> 完成整个过程


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

hbase提供了这两种方式进行导入.可以看到只是一个importtsv.bulk.output参数上的差别。内部的实现确实千差万别。

上面的那个命令是在map的时候输出Put. reduce的时候直接把put提交

下面那个在map时候做的事情一样。在reduce的时候就是通过HFileOutputFormat把KeyValues输出到HFile

但是下面的方式还有一个不走就是complete.就是将之前生成的HFile文件导入到region中。分布还是比较均匀的


本文标签: 数据Hbase