Я новичок в pyspark и python. Поэтому, пожалуйста, помогите мне с этой проблемой, где мне нужно найти максимальное значение, используя fold и используя operator.gt
или написав нашу собственную функцию lambda
.
Следующий код, написанный мной, выдает ошибку, что rdd не может быть проиндексирован. Я понял это, но как передать и сравнить значения каждого значения 1,2,0,3 с 0 и найти макс.
Здесь 0 - значение моего аккумулятора, а 1,2,0,3 - текущие значения каждый раз.
Я пытаюсь преобразовать программу, написанную на Scala, которая объясняет сложение в Python.
Ожидаемый ответ: ('d', 3)
from pyspark import SparkContext
from operator import gt
def main():
sc = SparkContext("local", "test")
data = sc.parallelize([('a', 1), ('b', 2),('c', 0), ('d', 3)])
#dummy = ('dummy', 0)
maxVal = data.fold(0, lambda acc, a : gt(acc, a[1])).collect()
print(maxVal)
if __name__ == '__main__':
main()