如何改进这个Spark管道?

时间:2018-05-14 15:06:33

标签: performance apache-spark pyspark

假设我正在加入几个Spark数据框:

abcd = a.join(b, 'bid', 'inner')\
        .join(c, 'cid', 'inner')\
        .join(d, 'did', 'left')\
        .distinct() 
abcd.head() # takes 5-7 min.

head调用触发需要5-7分钟的管道执行。它与那些joins有什么关系吗?你如何让管道更快?

1 个答案:

答案 0 :(得分:1)

head()只返回一条记录。 如果您只需要第一条记录,则不需要distinct()。 它可能会让你免于昂贵的洗牌。

但是,考虑到您已加入以上内容,并且结果数据集未排序 - 无法保证将返回哪条记录。