模板化数据流中的 Pub/Sub 输入完全忽略 NestedValueProvider
Posted
技术标签:
【中文标题】模板化数据流中的 Pub/Sub 输入完全忽略 NestedValueProvider【英文标题】:Pub/Sub input in templated Dataflow is completely ignoring 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 但不能通过模板运行此流)
【问题讨论】:
您可以尝试以这种格式传递您的订阅吗?项目/projects/1234/subscriptions/bbb
) 用全名包装我的订阅 ID,如 bbb
。但是当我启动模板时(如果这个包装在运行后确实有效)谷歌甚至不想创建工作模板。发生某种无效验证或某事。正如我所说,我可以通过 Dataflow 上的控制台运行它 - 只有模板创建会执行一些奇怪的操作
我了解到您只想使用订阅名称。你能分享你按什么顺序做的步骤吗?我想更好地了解正在发生的事情
【参考方案1】:
分析后 - 这是一个仅与模板创建验证相关的 Google Dataflow 错误(因为 Dataflow 运行的所有其他方式都表现正确)
我为此创建了问题 https://issuetracker.google.com/u/1/issues/157584222
现在它就是这个问题的答案
【讨论】:
我全心全意地希望我能在几天前找到这个,而不是浪费大约 3 天的时间来拔掉我的头发。感谢您发布此内容,您使我免于完全发疯以上是关于模板化数据流中的 Pub/Sub 输入完全忽略 NestedValueProvider的主要内容,如果未能解决你的问题,请参考以下文章
数据流模板 Cloud Pub/Sub 主题与订阅 BigQuery
有没有办法让 Pub/Sub -> Dataflow -> BigQuery 模板处理每条消息的多个记录?
Google Cloud Dataflow Pub/Sub to BigQuery 模板 WriteSuccessfulRecords wall time