Как проверить, можно ли использовать функцию в операциях сокращения в pyspark - PullRequest
0 голосов
/ 02 февраля 2020

Я хочу получить более четкое представление о том, какие функции я могу использовать в операции сокращения в 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

Я хотел бы знать, есть ли какой-нибудь эффективный способ проверить, будет ли операция уменьшения действительной или нет. Или, если я упускаю какой-либо важный момент за этой операцией сокращения.

...