2017-07-10 1 views
4

Beam 2.0にアップグレードした後、PipelineクラスにはもうgetOptions()クラスがありません。 私はそのexpand方法のオプションを得ることに依存している複合PTransformを持っている:Beam 2.0で複合PTransformでPipelineOptionsを取得するにはどうすればよいですか?

public class MyCompositeTransform extends PTransform<PBegin, PDone> { 
    @Override 
    public PDone expand(PBegin input) { 
     Pipeline pipeline = input.getPipeline(); 
     MyPipelineOptions options = pipeline.getOptions().as(MyPipelineOptions.class); 
     ... 
    } 
} 

ビーム2.0でexpand方法では全くPipelineOptionsにアクセスする方法があるようには思えません。

代替手段はありますか?

答えて

1

Pablo's answerです。 PipelineOptionsの管理方法に大きな変更があることを明確にしたいと思います。

これらを使用して、mainプログラム(またはパイプラインをビルドするコード)の引数を解析して渡すことができますが、これらはパイプラインの実行方法を構成するPipelineOptionsから技術的に独立しています。

ビームでは、Pipelineが完全に構築され、後でパイプラインの実行方法を制御するためにPipelineRunnerPipelineOptionsを選択します。パイプライン自体には実際にオプションがありません。

あなたが動的に取得されたいくつかのオプションを使用するようにPTransform(ないその拡張)の振る舞いをしたいならば、あなたはあなたのPTransformValueProviderlike this example in WriteFilesを受け入れて作る必要がありますし、ValueProviderlike here in ValueProviderTest

を返すパイプラインオプションを定義することができます
関連する問題