Я применяю карту, а затем уменьшаю преобразованиеByKey на RDD, используя pyspark. Я попробовал оба следующий синтаксис, и оба из них, кажется, работают:pyspark: разница между использованием (,) и [,] для парного представления для reducedByKey
случай 1:
my_rdd_out = my_rdd.map(lambda r: [r['my_id'], [[r['my_value']]]])\
.reduceByKey(lambda a, b: a+b)\
.map(lambda r: r[1])
случай 2:
my_rdd_out = my_rdd.map(lambda r: (r['my_id'], [[r['my_value']]]))\
.reduceByKey(lambda a, b: a+b)\
.map(lambda r: r[1])
г здесь класса from pyspark.sql import Row
. В случае 1 пара выходных данных карты находится в скобке; в случае 2 пара выходных данных карты находится в скобках. Хотя обе работы, мне интересно, есть ли разница между использованием [] и() для представления пары, которая позже будет использоваться для reduceByKey? Благодаря!
Так ли сокращениеByKey фактически отбрасывает список до кортежа до выполнения reduceByKey? Какой формат более формальный/стандартный? Благодаря! – Edamame
см. Мое редактирование (для этого потребовалось редактирование). Нет броска. И выберите свой формат в соответствии с удобством. Для кортежей/списков, созданных только для вызова функции, трудно выбрать, я согласен. –
Привет, Жан-Франсуа, спасибо за подробную информацию. Я пытаюсь понять реализацию def reduceByKey (func, iterable). Что должно быть func и iterable в моем примере: reduceByKey (lambda a, b: a + b)? Большое спасибо! – Edamame