提问者:小点点

数据流-动态创建配置Apache Beam


我想根据参数从创建处置选项中动态选择。在DataflowPipelineOptions中,我通过参数接受ValueProvider中的加载类型。但是,我无法从ValueProvider获取字符串来决定使用什么创建处置选项。

withCreateDisposition(BigQueryIO.Write.CreateDisposition.CREATE_IF_NEEDED)

我希望'CREATE_IF_NEEDED'是动态的。我想用这样的东西替换它。注意以下只是一个伪代码。我在这里寻找解决方案。

create_disp = options.getLoad()
withCreateDisposition(create_disp 

共1个答案

匿名用户

您可以传递表示createDisence的程序参数

程序参数(CREATE_NEVER或CREATE_IF_NEEDED):

--bqCreateDisposition=CREATE_NEVER

Java的Option类中,您可以将字段作为Enum传递(在这种情况下,CREATE_IF_NEEDED有一个默认值):

import org.apache.beam.sdk.io.gcp.bigquery.BigQueryIO;
import org.apache.beam.sdk.options.Default;
import org.apache.beam.sdk.options.Default.Enum;
import org.apache.beam.sdk.options.Description;
import org.apache.beam.sdk.options.PipelineOptions;

public interface MyOptions extends PipelineOptions {

    @Description("BQ create disposition")
    @Default
    @Enum("CREATE_IF_NEEDED")
    BigQueryIO.Write.CreateDisposition getBqCreateDisposition();

    void setBqCreateDisposition(BigQueryIO.Write.CreateDisposition value);
}