Согласно документации луча:
Переходные поля в вашем функциональном объекте не передаются работнику
экземпляры, потому что они не сериализуются автоматически.
Мой код:
class myBeamFunction(beam.DoFn):
def __setstate__(self, state):
self.__dict__ = state
self.my_nonserialisable_object = new Nonserialisable_object()
def process(self, element):
return self.my_nonserialisable_object.do(element)
Мое приложение не удалось, потому что:
RuntimeError: maximum recursion depth exceeded
Из стека трассировки я увидел, что это было вызвано:
Python/2.7/lib/python/site-packages/apache_beam/internal/pickler.py
Интересно, можно ли как-то инициировать все несериализуемые переменные, которые мне нужны для моей функции в рабочих экземплярах?
Спасибо.