我有一个数据流作业,可以转换数据并写入 BigQuery(批处理作业)。写入操作完成后,我想向 PubSub 发送一条消息,这将触发 BigQuery 中数据的进一步处理。我看到一些较旧的问题/答案暗示这是可能的,但仅限于流作业:
- Perform action after Dataflow pipeline has processed all data
- Execute a process exactly after BigQueryIO.write() operation
- How to notify when DataFlow Job is complete
我想知道现在是否以任何方式支持批量写入作业?不幸的是,我无法使用 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/