Обходной путь Spark Serialization для сторонних неявных значений
Я выполняю задание Spark, которое выполняет несколько вызовов Http по линии. Я решил использовать библиотекуSttp
что требует implicit
HTTP-бэкэнд, в моем случае HttpURLConnectionBackend()
: применение объекта, которое создает новый экземпляр класса, который нельзя сериализовать.
trait ApiUtils extends MediaTypes {
implicit val backend: SttpBackend[Identity, Nothing, NothingT] = HttpURLConnectionBackend()
def post = { ...
Как следствие, поскольку моя работа в Spark расширяет это trait
, все методы из этого trait
внутри задания Spark недоступны для исполнителей.
В качестве довольно безмозглого обходного пути я сделал val
а def
, но каков рекомендуемый способ разобраться в этих вещах?
Сама работа Spark - это class
, а не object
. Причина в том, чтобы имитировать / заглушить упомянутый бэкэнд Http внутри тестов.