【问题标题】:Pub/Sub input in templated Dataflow is completely ignoring NestedValueProvider模板化数据流中的 Pub/Sub 输入完全忽略 NestedValueProvider
【发布时间】:2020-09-13 05:18:23
【问题描述】:

我已经为从 Pub/Sub 读取消息的 Dataflow 创建了模板 问题是 NestedValueProvider 无法修改通过选项值发送的内容,我不知道为什么 - 在某些屏幕下方

传递的参数:

代码:

结果:

如果有人问我为什么需要嵌套它 - 我只想添加订阅 ID 并在路径的其余部分添加前缀..


编辑

我的步骤:

1.Created 管道从 Pub/Sub 订阅中读取,订阅名称使用 NestedValueProvider 创建订阅名称

pipeline.apply(
                            "Read PubSub messages",
                            PubsubIO.readStrings().fromSubscription(
                                    NestedValueProvider.of(
                                            options.getSubscriptionID(),
                                            input -> "projects/ozone-analytics-dev/subscriptions/" + input)
                            )
                    )

2.创建模板

3. 使用有效且现有的订阅 ID 运行模板

4.创建数据流作业时出现错误(我认为该作业甚至没有启动,并且此错误是通过一些预验证导致的,因为我可以在本地或通常使用 DataflowRunner 但不能通过模板运行此流)

【问题讨论】:

  • 您可以尝试以这种格式传递您的订阅吗?项目//subscriptions/
  • 例如,如果您的项目 id 为 1234,订阅名称为 bbb,则为 projects/1234/subscriptions/bbb
  • 是的,这会起作用 - 但我的问题是我想通过 NestedValueProvider (projects/1234/subscriptions/bbb) 用全名包装我的订阅 ID,如 bbb。但是当我启动模板时(如果这个包装在运行后确实有效)谷歌甚至不想创建工作模板。发生某种无效验证或某事。正如我所说,我可以通过 Dataflow 上的控制台运行它 - 只有模板创建会执行一些奇怪的操作
  • 我了解到您只想使用订阅名称。你能分享你按什么顺序做的步骤吗?我想更好地了解正在发生的事情

标签: google-cloud-platform apache-beam subscription google-cloud-pubsub dataflow


【解决方案1】:

分析后 - 这是一个仅与模板创建验证相关的 Google Dataflow 错误(因为 Dataflow 运行的所有其他方式都表现正确)

我为此创建了问题 https://issuetracker.google.com/u/1/issues/157584222

现在它就是这个问题的答案

【讨论】:

  • 我全心全意地希望我能在几天前​​找到这个,而不是浪费大约 3 天的时间来拔掉我的头发。感谢您发布此内容,您使我免于完全发疯
猜你喜欢
  • 2018-03-19
  • 2019-10-03
  • 2021-04-26
  • 2019-12-20
  • 1970-01-01
  • 2019-07-03
  • 2020-01-30
  • 1970-01-01
  • 2017-07-21
相关资源
最近更新 更多