Преобразование лямбда-функций в регулярные функции - PullRequest
1 голос
/ 01 октября 2019

Мне нужно преобразовать следующий код, включающий несколько лямбда-функций, в отдельные «обычные» функции. Как мне это сделать?

Я сейчас работаю над Pyspark. Источник данных - СДР

result = rdd.filter(lambda x: x[0]=='9439').map(lambda x: (x[0], json.loads(x[1])['exposures'])).flatMapValues(lambda x: x).map(lambda x: {'serial_no' : x[0], **x[1]})

Моя попытка:

def acct_tuple(x):
    return (x[0], json.loads(x[1])['exposures'])


def flat_map(x):
    return x

def get_tuple(x):
    return {'serial_no': x[0], **x[1]}


rdd = rdd.map(acct_tuple(x)).flatMapValues(flat_map(x)).map(get_tuple(x))

Есть ли лучший способ сделать это?

1 Ответ

2 голосов
/ 01 октября 2019

Вы должны передать саму функцию в качестве параметра и не вызывать ее, следовательно:

def acct_tuple(x):
    return (x[0], json.loads(x[1])['exposures'])


def flat_map(x):
    return x

def get_tuple(x):
    return {'serial_no': x[0], **x[1]}


rdd = rdd.map(acct_tuple).flatMapValues(flat_map).map(get_tuple)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...