PUG*_*PUG 4 java google-cloud-dataflow apache-beam
我在dataflow 2.1 sdk中有一个简单的管道.从pubsub读取数据然后将DoFn应用于它.
PCollection<MyClass> e = streamData.apply("ToE", ParDo.of(new MyDoFNClass()));
Run Code Online (Sandbox Code Playgroud)
在此管道上获得以下错误:
java.lang.IllegalStateException:无法返回ToEvents/ParMultiDo(MyDoFNClass).out0 [PCollection]的默认编码器.更正以下根本原因之一:未手动指定编码器; 你可以使用.setCoder()来完成.从CoderRegistry推断编码器失败:无法为com.XXmodel.MyClass提供编码器.
MyDoFn类如下:
@DefaultCoder(AvroCoder.class)
public class MyClass{
public long id;
public HashMap<String,HashSet<String>> a;
@SerializedName("a")
public Integer Id;
@SerializedName("ae")
public String ae;
}
Run Code Online (Sandbox Code Playgroud)
PUG*_*PUG 13
找到了解决办法只是neeeded添加implements Serializable到MyClass
@DefaultCoder(AvroCoder.class)
public class MyClass implements Serializable {
public long id;
public HashMap<String,HashSet<String>> a;
@SerializedName("a")
public Integer Id;
@SerializedName("ae")
public String ae;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2422 次 |
| 最近记录: |