当前位置: 首页 > 知识库问答 >
问题:

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

蒙经纶
2023-03-14

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

我创建了一个从 BigQuery 读取并写入 Bigtable 的管道。当我提供静态参数时,管道工作正常(使用 ConfigBigtableIO 和 ConfigBigtableConfiguration,请参阅此处的示例 - https://github.com/GoogleCloudPlatform/cloud-bigtable-examples/blob/master/java/dataflow-connector-examples/src/ main/java/com/google/cloud/bigtable/dataflow/example/HelloWorldWrite.java),但在尝试使用运行时参数设置管道时出现编译错误。选项设置为所有参数都是运行时值提供者。

    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()。。。被组织起来。阿帕奇。梁sdk。转变。p转换、输出

共有1个答案

党博超
2023-03-14

运行时参数旨在用于 Dataflow 模板。

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

  1. 创建包含所需运行时参数的选项,即
    ValueProvider tableId

使用模板的优点是它允许管道构建一次并在以后使用运行时参数执行多次。有关如何使用 Dataflow 模板的更多信息:https://cloud.google.com/dataflow/docs/templates/overview

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

希望这可以帮助!

 类似资料:
  • 我有一个批次处理作业在数据流运行在gcp下版本apache-梁[gcp]==2.19.0的数据流运行。我为作业创建了一个自定义模板。作业正在按预期运行,但我还想添加最大作业持续时间。我在wait_until_finish()方法中找到了持续时间(毫秒)参数,它应该是可用的。问题是:如何让模板化批处理作业在运行时间超过持续时间时自动停止?我不需要保存任何数据,我只希望工作运行时间过长时停止。我已经实

  • 我有一个数据流工作,将单个文件分割成x个记录(表)。这些流在bigQuery没有问题。 不过,我发现没有办法在结果出来后执行管道中的另一个阶段。 举个例子 根据上述内容,我希望运行以下内容: 是有无论如何运行管道的另一个部分后,up到bigQuery或这是不可能的?提前感谢。

  • 'Handlebars.compile' 与 'Handlebars.precompile' 函数构造了另一个函数。构造的函数可以用 template(context, options) 调用 。context 是输入的对象。 options 是可能具有以下属性的对象: data 输入一个对象以设定自定义的 @variable 的私有值。 helpers 输入以提供自定义助手代码以及全局的助手代码

  • 问题内容: 我有以下签名的方法: 它读取json字符串,并将其转换为适当类型的对象的列表,例如。整数,字符串等 是否有一种可靠的方法可以通过从参数中推断出参数来将其从方法中删除?例如。有没有办法可以在不丢失功能的情况下将方法签名更改为以下内容? 似乎该解决方案将需要对ParameterizedType进行一些精美的操作。我看了以下内容,但是我使用的方法不正确,或者它们没有达到我的期望: 来自htt

  • 我是Spring框架的新手,找不到实现以下内容的方法: 我正在使用一个类,它的属性都是私有的,没有设置器(使用该类对象的预期方式是用构造函数设置一次属性)-我将它称为首选项。我还有几个类,每个类都有相同的首选项实例作为属性。首选项旨在包含某些属性,其中一些只能在运行时解析(例如由用户提供)。

  • 问题内容: 在已经加载(运行)JVM之后,是否可以更改/修改/添加VM参数?如果是这样,我该怎么办? 问题答案: 对于通过命令行上的标志设置的属性,您需要System.setProperty。例如: 更新: 您无法动态启用调试,但是可以在启动时启用调试,但稍后再附加调试器。通过以下操作,您可以侦听端口12345并立即开始运行程序(通过)。然后,您可以在需要时附加调试器,分离调试器,稍后再附加等。