【发布时间】: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