Вызов метода, подобный
foo_object.f(x)
, является просто синтаксическим сахаром для
Foo.f(foo_object, x)
, поэтому эффективная передача метода в udf
на самом деле не отличается от передачи простой функции.
Spark будет:
- Определить замыкание.
- Определить аргументы.
- Сериализованные объекты, вычисленные выше, а также сам вызываемый объект.
- Распределите этот комплект среди рабочих.
Единственная возможная ошибка, с которой можно столкнуться и при передаче простой функции, заключается в том, что методы сериализации, используемые в PySpark, не могут сериализовать определения классов.,Это означает, что обязательные классы должны присутствовать на PYTHONPATH
всех работников.