java - BigQuery 写入完成后数据流发送 PubSub 消息

标签 java google-bigquery google-cloud-dataflow apache-beam google-cloud-pubsub

我有一个数据流作业,可以转换数据并写入 BigQuery(批处理作业)。写入操作完成后,我想向 PubSub 发送一条消息,这将触发 BigQuery 中数据的进一步处理。我看到一些较旧的问题/答案暗示这是可能的,但仅限于流作业:

我想知道现在是否以任何方式支持批量写入作业?不幸的是,我无法使用 apache airflow 来协调这一切,因此发送 PubSub 消息似乎是最简单的方法。

最佳答案

Beam 的概念意味着不可能做你想做的事。事实上,您将 PCollection 写入 BigQuery。根据定义,a PCollection is a bounded or unbounded collection 。在无界集合之后如何触发某些东西?你什么时候知道你已经到达终点了?

所以,你有不同的方法来实现这一目标。在您的代码中,您可以等待管道完成,然后发布 PubSub 消息。

就我个人而言,我更喜欢基于日志;当数据流作业完成时,我得到作业结束的日志,并且 sink it into PubSub 。这将管道代码和下一步解相关。

您还可以查看 Workflow 。它尚未真正成熟,但对于像您这样的简单工作流程来说非常有前途。

关于java - BigQuery 写入完成后数据流发送 PubSub 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63830098/

相关文章:

datetime - 如何在BigQuery中将dd/mm/yyyy字符串转换为日期?

node.js - BigQuery 读取 ECONNRESET

java - 如何在 Dataflow 中计算两个 PCollections 的笛卡尔积?

python - 如何在 Python 中创建从 Pub/Sub 到 GCS 的数据流管道

Javax WebSockets 不适用于 programmattic Tomcat 7 实例化

java - 谁能告诉我如何删除/处理 "java.net.BindException: Address already in use"

java - 将 JSONArray 的内容映射到给定类的 Java 函数?

java - 两个不同应用程序中的静态变量行为

google-bigquery - "Exceeded quota: too many free query bytes scanned for this project"在 Google BigQuery 中

google-cloud-dataflow - 从数据流加载 Bigquery 表时,我们如何设置 maximum_bad_records?