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

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文件了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值