Я хочу получить более четкое представление о том, какие функции я могу использовать в операции сокращения в pyspark.
значение функции уменьшения здесь говорит о том, что
Функция должна быть коммутативной и ассоциативной, чтобы ее можно было правильно вычислить параллельно.
Например, следующая функция является коммутативной и ассоциативной
def funcA(x,y):
if x>y:
return x
else:
return y
, а следующая не является ни коммутативным, ни ассоциативным, потому что f (2,3) не равно f (3,2)
def funcB(x, y):
return x/2 + y
Так что функция funcB не должна допускаться в операции сокращения.
Но это все же выводит, когда я запускаю следующее:
rdd=sc.parallelize([0,2,4,6])
rdd.reduce(lambda x,y: funcB(x,y))
>>> 9.0
Я хотел бы знать, есть ли какой-нибудь эффективный способ проверить, будет ли операция уменьшения действительной или нет. Или, если я упускаю какой-либо важный момент за этой операцией сокращения.