在批处理模式下使用 beam.io.WriteToPubSub() 时,“ValueError:Cloud Pub/Sub 目前仅可用于流式管道”

Posted

技术标签:

【中文标题】在批处理模式下使用 beam.io.WriteToPubSub() 时,“ValueError:Cloud Pub/Sub 目前仅可用于流式管道”【英文标题】:"ValueError: Cloud Pub/Sub is currently available for use only in streaming pipelines" while using beam.io.WriteToPubSub() in batch mode 【发布时间】:2019-12-14 01:55:21 【问题描述】:

我正在从查找中读取一些客户记录并将其写入 bigquery 表,然后从同一个表中我正在读取一些必需的数据字段并尝试使用数据流管道以批处理模式将该数据 (Json) 作为消息推送到 pubsub .但出现错误:“ValueError:Cloud Pub/Sub 目前仅可用于流式传输管道”。

delete_rows = p | 'reading data to be deleted' >> beam.io.Read(
            beam.io.BigQuerySource(
                query=delete_query,
                use_standard_sql=True))

        required_data = delete_rows | 'Retriving only required data' >> beam.ParDo(RequiredData())

        push_to_pubsub = required_data | 'Pushing data to pubsub' >> beam.io.WriteToPubSub(
            topic='my topic name',
            with_attributes=False,
            id_label=None,
            timestamp_attribute=None
        )

我想在数据流管道的批处理模式下使用 PubSub

【问题讨论】:

【参考方案1】:

感谢您试用。适用于 Dataflow Python SDK 的 Cloud Pub/Sub 目前作为 Dataflow 本机源实现,仅适用于 Dataflow Python 流式后端。我们可以考虑在未来提供一个适用于批处理管道的实现,但我没有这方面的 ETA。

【讨论】:

以上是关于在批处理模式下使用 beam.io.WriteToPubSub() 时,“ValueError:Cloud Pub/Sub 目前仅可用于流式管道”的主要内容,如果未能解决你的问题,请参考以下文章

在批处理模式下使用 openGL 渲染器时所有文本都会丢失

3.5 在批处理模式下使用mysql

仅在发布模式下使用 glGenBuffer 的未处理异常 - QT

python 在调试模式下使用Django的处理静态文件

如何在服务器端处理模式下使用 JOIN 进行数据库查询

为啥消息处理程序在调试模式下不起作用?