Как передать несколько аргументов при сопоставлении и фильтрации RDD?

#apache-spark #pyspark #rdd

Вопрос:

В настоящее время у меня есть эта строка для фильтрации и применения функции к RDD.

 data_to_update.rdd.map(find_differences).filter(lambda row: bool(row))
 

Я хочу изменить find_differences функцию, чтобы она также принимала другой аргумент unique_id в дополнение к row . Я не совсем уверен, как изменить эту строку, чтобы сделать это, или есть ли лучший способ написать ее.

Комментарии:

1. Использовать операции сгиба?

Ответ №1:

Предполагая, что ваша текущая функция выглядит примерно так:

 def find_differences(row):
    # do something
    return result
 

Вы можете создать новую функцию и частичную функцию, соответствующую вашей исходной функции:

 from functools import partial 

def find_differences_id(unique_id, row):
    # do something else
    return another_result

find_differences = partial(find_differences_id, unique_id)
 

И нанесите на карту RDD, как вы делали это раньше.