使用spark将数据以bulkload的方式写入Hbase时报错

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012719230/article/details/81456141

Exception in thread "main" java.io.IOException: Trying to load more than 32 hfiles to one family of one region

从报错日志中可以很明显看出因为Hfiles的个数超出了32默认的时32,关键时怎么改的问题,我们用的是CDH在Hbase的webui页面,没找到类似配置,通过在网上查找资料发现可以在程序中设置。

conf.setInt(LoadIncrementalHFiles.MAX_FILES_PER_REGION_PER_FAMILY,“你要设置的Hfile个数”)

在设置个数的时候也遇到一个坑,刚开始改成64,提示超出了64,设置成96又提示超出了96,到底设置多少才合适呢?
这要看你在临时文件中生成了多少Hfile文件

result.saveAsNewAPIHadoopFile("/tmp/hbaeTest", classOf[ImmutableBytesWritable], classOf[KeyValue],
  classOf[HFileOutputFormat], conf)

val bulkLoader = new LoadIncrementalHFiles(conf)
bulkLoader.doBulkLoad(new Path("/tmp/hbaeTest"), table)

去这个目录看一下有多少个文件设置成多少就可以了

如果临时文件在HDFS上直接使用:hadoop fs -count /tmp/hbaeTest 命令就可以知道生成了多少个HFile文件了

猜你喜欢

转载自blog.csdn.net/u012719230/article/details/81456141
今日推荐