Hbase-Trying to load more than 32 hfiles to one family of one region

系统管理员 2024-04-17 05:49 133阅读 0赞
  • 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中设置

  1. <property>
  2. <name>hbase.mapreduce.bulkload.max.hfiles.perRegion.perFamily</name>
  3. <value>3200</value>
  4. </property>

重新启动集群

参考链接

https://blog.csdn.net/weixin_40861707/article/details/99976526

发表评论

表情:
评论列表 (有 0 条评论,133人围观)

还没有评论,来说两句吧...

相关阅读