2 回答

TA貢獻(xiàn)1995條經(jīng)驗(yàn) 獲得超2個(gè)贊
作為一般經(jīng)驗(yàn)法則,您需要盡可能少的 Python 操作。
我將您的代碼簡(jiǎn)化為一map加一reduce。
import operator
delay_sum = datasplit\
.map(lambda x: (x[8]+x[9], float(x[33]) if any(x[33]) else 0.0))\
.reduceByKey(operator.add)
不用說(shuō),使用 spark 數(shù)據(jù)幀時(shí),這些類型的操作通常運(yùn)行得更快。

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊
您可以在下面創(chuàng)建密鑰reduceByKey,然后應(yīng)用然后映射以獲得統(tǒng)一密鑰:
from operator import add
result = delay.map(lambda x: ((x[1], x[2]), x[0])) \
.reduceByKey(add).map(lambda x: (x[0][1] + x[0][2], x[1]))
添加回答
舉報(bào)