尝试将超过32个hfiles加载到一个区域的一个族中

3vpjnl9f  于 2021-06-04  发布在  Hadoop
关注(0)|答案(3)|浏览(702)

我正在将许多文件导入hbase表,所以我决定使用bulkload9.8。散装货物。我已经通过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)

您知道如何更改每个家庭和地区的文件数吗。是否可以从cli更改它?

bq9c1y66

bq9c1y661#

你检查过这个了吗?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);

可以尝试使用传递给作业的配置对象更改此属性。

rta7y2nd

rta7y2nd2#

@阿希什的回答是正确的。要在shell中使用它,请尝试:

hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles -Dhbase.mapreduce.bulkload.max.hfiles.perRegion.perFamily=1024 <SOURCE> <TABLE>
tyu7yeag

tyu7yeag3#

您可以将hbase-site.xml文件中的“hbase.hregion.max.filesize”或as-d参数配置为更高的值(可能取决于您的输入文件大小),这样创建的hfiles数就会更少。默认值为10 gb。
或者,您可以将hbase-site.xml或as-d参数中的“hbase.mapreduce.bulkload.max.hfiles.perregion.perfamily”配置为更高的值(可以从hdfs中找到为列族创建的最大hfiles数)。默认值为32。

相关问题