2017-12-08 5 views
0

私はデータフロー2.1 sdkで単純なパイプラインを持っています。 pubsubからデータを読み込んでDoFnを適用します。java.lang.IllegalStateException:データフロー2.Xの既定のコーダーを返すことができません

PCollection<MyClass> e = streamData.apply("ToE", ParDo.of(new MyDoFNClass())); 

このパイプラインにエラーを下回る行き方:

java.lang.IllegalStateException:(MyDoFNClass).out0 [PCollection] ToEvents/ParMultiDoのデフォルトコーダーを返すことができませんでしたが。次の根本原因の1つを修正してください。 コーダーが手動で指定されていません。 .setCoder()を使用するとそうすることができます。 CoderRegistryからCoderを推測できませんでした:com.X.X.model.MyClassのCoderを提供できませんでした。

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; 
} 
+0

1)にimplements Serializableを追加するneeededソリューションを発見されましたか? 2)あるいは、メッセージが示唆しているように.setCoder()を使って手動でコーダーを指定しようとしましたか? – jkff

答えて

2

だけのように見えるMyDoFNClass何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; 
} 
関連する問題