我将大量文件导入到HBase表中,因此我决定使用批量加载9.8. Bulk Loading。我已经设法通过MapReduce作业准备了数据,但是当我尝试使用以下命令完成加载时
hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles <src> <target_table>
我得到了以下错误:
ERROR mapreduce.LoadIncrementalHFiles: Trying to load more than 32 hfiles to family d of region with start key
Exception in thread "main" java.io.IOException: Trying to load more than 32 hfiles to one family of one region
at org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles.doBulkLoad(LoadIncrementalHFiles.java:288)
at org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles.run(LoadIncrementalHFiles.java:842)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)
at org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles.main(LoadIncrementalHFiles.java:847)
您知道如何更改每个家庭和地区的hfile数量吗?是否可以从CLI中更改它?
发布于 2014-08-27 17:30:56
您可以在hbase-site.xml文件中配置"hbase.hregion.max.filesize",或者将-D参数配置为更高的值(可能取决于您的输入文件大小),这样创建的hfile数量将会更少。默认值为10 GB。
或者,可以在hbase-site.xml中配置"hbase.mapreduce.bulkload.max.hfiles.perRegion.perFamily",或者将-D参数配置为一个更高的值(可以从HDFS中找到为列族创建的hfile的最大数量)。默认值为32。
发布于 2015-10-29 00:54:49
@ashish的答案是正确的。要在shell中使用它,可以尝试使用:
hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles -Dhbase.mapreduce.bulkload.max.hfiles.perRegion.perFamily=1024 <SOURCE> <TABLE>
发布于 2014-07-25 17:28:37
你检查过了吗?https://hbase.apache.org/xref/org/apache/hadoop/hbase/mapreduce/LoadIncrementalHFiles.html
public static final String MAX_FILES_PER_REGION_PER_FAMILY = "hbase.mapreduce.bulkload.max.hfiles.perRegion.perFamily";
maxFilesPerRegionPerFamily = conf.getInt(MAX_FILES_PER_REGION_PER_FAMILY, 32);
您可以尝试使用要传递给作业的配置对象来更改此属性。
https://stackoverflow.com/questions/24950393
复制相似问题