我正在处理每天都会运行的管道。它包括联接两个表,分别为x和y(分别约为18 MB和1.5 GB大小),并将联接的输出加载到最终表中。
以下是有关环境的事实
对于表x:
对于表y:
现在的问题是:
我为火花工作尝试了不同的资源组合。
例如:
所有三种组合都具有相同的性能。我不确定我在这里缺少什么。
我还尝试广播小表'x',以避免加入时出现随机播放,但性能没有太大改善。
一个主要的观察结果是:
70%的执行时间用于读取大表y,我想这是由于每个分区的文件数量更多。
我不确定蜂巢如何提供相同的性能。
请提出建议。
答案 0 :(得分:0)
我假设您正在比较Hive on MR和Spark。如果不是这种情况,请告诉我。因为Hive(在tez或spark上)与Spark Sql不会有所不同 在性能方面。
我认为主要问题是小文件太多。 I / O本身会消耗大量CPU和时间,因此您无法体验Spark的处理能力。
我的建议是在读取实木复合地板文件后立即合并火花数据帧。请合并“ x”数据框为单个分区和“ y” 数据帧分为6-7个分区。
完成上述操作后,请执行join(broadcastHashJoin)。