Отображение СДР с использованием функции-члена объекта - PullRequest
0 голосов
/ 08 ноября 2018

Я хотел бы сопоставить функцию foo(x, my_object) с СДР rdd

rdd2 = rdd.map(lambda x: foo(x, my_object))

, где foo определяется как

def foo(x, some_object):

    return [x, some_object.member_function(x)]

Другими словами, отображение применяет функцию-член переданного объекта. (В моем конкретном случае member_function() - это, по сути, вызов функции Keras predict().)

Проблема в том, что я получаю ошибку PicklingError: Could not serialize object: TypeError: can't pickle _thread.lock objects. Очевидно, у Spark есть проблема с обработкой определенных объектов.

Каков наилучший способ сделать это?

PS: я не намерен использовать RDD, на самом деле я бы предпочел работать с DataFrames.

РЕДАКТИРОВАТЬ : В отличие от примера , предложенного в качестве дубликата, эта проблема не характерна для глубокого обучения. Кроме того, я ищу минимальный рабочий пример, которого нет в предложенном дубликате (ссылки на AWS 'S3 и т. Д.). Наконец, нет объяснения, почему mapPartitions() является решением. Мне просто нужен способ выполнить сопоставление и передать объект. Почему это не может работать? Предположительно, это как-то связано с механизмами сериализации Spark, но я хотел бы знать, какими могут быть (элегантные) обходные пути.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...