Hbase-Trying to load more than 32 hfiles to one family of one region
BulkLoad方式优化
- 背景
- 问题分析
解决方案
- 方式一:spark DataFrame写入Hive临时表前进行coalesce(30)
- 方式二:
- 参考链接
BulkLoad方式优化
背景
项目中使用到Hbase BulkLoad方式插入数据,当数据量较大时或小文件过多时,任务失败: 报错:Exception in thread “main” java.io.IOException: Trying to load more than 32 hfiles to one family of one region
问题分析
代码逻辑是将临时存放在hive临时表的数据 分别写入到Hive正式表和Hbase中, Hbase是使用BulkLoad方式插入的, 查看了Hive临时表中的数据大小,parquet格式文件,每个15MB左右,在网上查相关异常,也给出了相关的解决方案
解决方案
方式一:spark DataFrame写入Hive临时表前进行coalesce(30)
抱着试下的心态,在写入hive之前减少了分区,结果运行成功
方式二:
hbase-site.xml中设置
<property>
<name>hbase.mapreduce.bulkload.max.hfiles.perRegion.perFamily</name>
<value>3200</value>
</property>
重新启动集群
参考链接
https://blog.csdn.net/weixin_40861707/article/details/99976526
还没有评论,来说两句吧...