使用命令bin/hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.columns=HBASE_ROW_KEY,cf:a,cf:b,cf:c <tablename> <hdfs-inputdir> 需要指出的是源文件默认以” “为分割符,如果需要换成其它分割符,在执行时加上-Dimporttsv.separator=”,”,则变成了以”,”分割admin管理员组文章数量:1576369
这个工具是使用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数据导入 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1727799336a1130641.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论