[英]Why must MicroBatchReader be Serializable? Task not serializable error
我正在練習用Java實現自己的V2定制結構化流源,該源僅從套接字讀取文本並將其解析為具有兩個字段“ field1”和“ field2”的JavaBean。
運行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
。
更新:我的班級結構是這樣的
public class ... implements DataSourceV2, ... {
private class ... implements MicroBatchReader {
}
}
將MicroBatchReader移到DataSourceV2之外對我來說很有效。
public class ... implements DataSourceV2, ... {
}
private class ... implements MicroBatchReader {
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.