Почему MicroBatchReader должен быть сериализуемым?Ошибка задачи не сериализуема - PullRequest
0 голосов
/ 01 июня 2018

Я практикую реализацию собственного собственного структурированного потокового источника V2 в Java, который просто читает текст из сокета и анализирует его в JavaBean с двумя полями "field1" и "field2".

При запускеSimpleQuery

StreamingQuery query = inStream.groupBy("field1").count().writeStream()
     .outputMode("complete")
     .format("console")
     .start();

Я получаю следующую ошибку

org.apache.spark.SparkException: Task not serializable
...

Caused by java.io.NotSerializableException: CustomStreamSource.SocketSourceV2$SocketBatchReader

Serialization stack:
...

У меня есть пара переменных экземпляра, которые не могут быть сериализованы в моем пользовательском SocketBatchReader, а именно Socket и Thread,Есть ли что-нибудь вокруг этого?Кроме того, исходная реализация пакетного считывателя сокетов , похоже, тоже не реализует Serializable.

1 Ответ

0 голосов
/ 01 июня 2018

Обновление: у меня была такая структура классов, как эта

public class ... implements DataSourceV2, ... {
    private class ... implements MicroBatchReader {

    }
}

Перенос моего MicroBatchReader за пределы DataSourceV2 работал для меня.

public class ... implements DataSourceV2, ... {

}
private class ... implements MicroBatchReader {

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