簡體   English   中英

為什么MicroBatchReader必須可序列化? 任務無法序列化錯誤

[英]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中序列化,即SocketThread 有沒有辦法解決? 同樣,源套接字批處理讀取器實現似乎也未實現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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM