我正在尝试通过具有6个节点(每个节点8个内核和56GB内存)的EMR集群执行火花作业。 Spark作业会对Hive表上的分区进行增量加载,最后,它会执行刷新表以更新元数据。
刷新命令需要3-6个小时才能完成,这太长了。
Hive中的数据性质:
注意:它是按日期划分的分区,无法更改。
使用的火花配置:
尝试过的事情:
MSCK repair table tablename
以上所有内容都无法减少刷新Hive上的分区的时间。
一些假设:
任何帮助将不胜感激。
答案 0 :(得分:0)
在可能的情况下,将分区设为1列。当我们具有多级(多列分区)时,它会杀死
使用R类型实例。与价格相同的M型实例相比,它提供了更多的内存
如果有许多小文件,请使用合并合并源中的文件。
检查映射器任务的数量。任务越多,性能越差
使用EMRFS而不是S3来保留元数据信息
在下面使用
{ “分类”:“火花”, “属性”:{ “ maximizeResourceAllocation”:“ true” } }
遵循Link下面的一些说明