加入Spark数据帧的替代方案

时间:2018-04-03 21:27:23

标签: apache-spark join spark-dataframe

我有两个Spark数据帧,每个数据帧为5.39亿行和4列。列A和B是字符串,列C,D,E和F是浮点数

DF1
-----------------
A      B     C      D
"A1"  "B1"  1.1    1.2
"A2"  "B2"  1.3    1.4

DF2
-----------------
A      B     E      F
"A1"  "B1"  2.1    2.2
"A2"  "B2"  2.3    2.4

我想加入DF1(5.39亿行)和DF2(也是5.39亿行)。我在50节点集群和8 GB执行程序内存上尝试了DF1.join(DF2 ,," fullouter")。它会自动终止带有内存不足错误消息的群集。

是否有替代方法可以加入rdds或数据集,这些数据集的内存效率高于df.join()?

2 个答案:

答案 0 :(得分:0)

请检查以下内容

  1. 使用过的压缩方式。
  2. 存在加入条件。
  3. 从spark UI中检查您的驱动程序堆内存并进行更改。

答案 1 :(得分:0)

您还需要检查以下内容: 1)您如何划分数据 2)您已根据分区数分配了多少执行程序 3)如上所述:驱动程序内存