Java 在apachebeam中使用BigtableIO的运行时参数

Java 在apachebeam中使用BigtableIO的运行时参数,java,google-cloud-dataflow,apache-beam,google-cloud-bigtable,Java,Google Cloud Dataflow,Apache Beam,Google Cloud Bigtable,我试图在ApacheBeam中使用BigtableIO的运行时参数来写入BigTable 我已经创建了一个从BigQuery读取并写入Bigtable的管道。 当我提供静态参数时(使用ConfigBigtableIO和ConfigBigtableConfiguration,参考这里的示例),管道工作正常,但在尝试使用运行时参数设置管道时,我遇到了编译错误。 设置选项时,所有参数都是运行时值提供程序 p.apply(BigQueryIO.readTableRows().fromQuery(

我试图在ApacheBeam中使用BigtableIO的运行时参数来写入BigTable

我已经创建了一个从BigQuery读取并写入Bigtable的管道。 当我提供静态参数时(使用ConfigBigtableIO和ConfigBigtableConfiguration,参考这里的示例),管道工作正常,但在尝试使用运行时参数设置管道时,我遇到了编译错误。 设置选项时,所有参数都是运行时值提供程序

    p.apply(BigQueryIO.readTableRows().fromQuery(options.getBqQuery())
            .usingStandardSql())
            .apply(ParDo.of(new TransFormFn(options.getColumnFamily(), options.getRowKey(), options.getColumnKey(), options.getRowKeySuffix())))

            .apply(BigtableIO.write().withProjectId(options.getBigtableProjectId()).
                    withInstanceId(options.getBigtableInstanceId()).
                   withTableId(options.getBigtableTableId()));
它需要Bigtable.write()的输出。。。要成为org.apache.beam.sdk.transforms.ptTransform,输出> 当Bigtable.write()返回一个write对象时。
您能否帮助提供正确的语法来修复此问题?谢谢

运行时参数用于数据流模板中

您是否正在尝试创建模板并使用该模板运行管道?如果是,则需要执行以下步骤:

  • 创建包含所需运行时参数的选项,即
    ValueProvider表ID
  • 将这些运行时参数传递给配置对象:即withTableId(ValueProvider tableId)=>
    withTableId(options.getTableId())
  • 构建模板
  • 使用模板执行管道
  • 使用模板的优点是,它允许管道构造一次,然后使用运行时参数执行多次。 有关如何使用数据流模板的详细信息:

    不使用数据流模板时,您没有设置运行时参数,即withTableId(ValueProvider tableId)。而是使用withTableId(字符串tableId)


    希望这有帮助

    下面是Write类的定义::公共抽象静态类Write extends pttransform