2017-10-31 5 views
0

)私はビームgoogleのdataflowパイプラインの例の1つを試していますが、MapElementsとメソッドの例外であるSingleFunction/SerializableFunctionが呼び出されています。コードスニペットで次のメソッドへApache beam Dataflow SDKエラー(例:

static class ParseTableRowJson extends SimpleFunction<String, TableRow> { 
    @Override 
    public TableRow apply(String input) { 
     try { 
      return Transport.getJsonFactory().fromString(input, TableRow.class); 
     } catch (IOException e) { 
      throw new RuntimeException("Failed parsing table row json", e); 
     } 
    } 
} 
...... 
p.apply(TextIO.read().from(options.getInput())) 
       .apply(MapElements.via(new ParseTableRowJson())) 
       .apply(new ComputeTopSessions(samplingThreshold)) 
       .apply("Write", 
TextIO.write().withoutSharding().to(options.getOutput())); 

例外という点で、そのあいまいなコール:

Ambiguous method call. Both 
via (SimpleFunction<String, TableRow>) in MapElements and 
via (SerializableFunction)    in MapElements match 

は、他の誰かが同じ例外にぶつかったし、それを回避する方法を持っていますか?

完全な例はgithub(https://github.com/apache/beam/blob/master/examples/java/src/main/java/org/apache/beam/examples/complete/TopWikipediaSessions.java)です。

おかげで、

フェルナンド

答えて

0

これはHEADでコードに固定されているようです。具体的にはMapElementsには、2つの静的バージョンviaがなくなりました。短期間では、ParseTableRowJsonSimpleFunctionの代わりにDoFnにすることで、HEADからBeamをインストールするか、ParDoを直接使用するようにその例を更新することができます。

+0

こんにちはベン、返信ありがとう、私はあなたが言ったようにMapElementsをMapFileに変換してしまい、うまくいきました。 –

関連する問題