繁体   English   中英

在 Apache Beam/Google Cloud Dataflow 上创建文件和数据流

[英]Creating a file and streaming in data on Apache Beam/Google Cloud Dataflow

我没有为我的用例找到任何文档或任何其他问题/答案。 我想我会发布一个问题。

在 Apache Beam/Google Cloud Dataflow 上,我需要接收 PubSub 消息,根据此消息中的信息从 BigQuery 生成动态查询,从 BigQuery 中提取包含 batchID 的行,在 Google Cloud Storage 上为每个 batchID 创建一个文件,然后 stream batchID 文件的行。 对于每个 BigQuery 行(表示为 JSON 字符串),我会检查其 batchID,然后将其作为新行添加到正确的 batchID 文件中。

我想通了 PubSub 和 BigQuery 的东西。 我现在处于获得字符串 PCollection 的阶段(每个字符串都是来自 BigQuery 的一行;字符串按 batchID 分组)。

我想要:

  1. 查看每个字符串的 batchID,因为它进来了
  2. 如果此 batchID 的文件不存在,则创建一个新文件,否则,什么都不做
  3. 将每个字符串添加到与其 batchID 对应的文件中的新行

换句话说,我想为每个 batchID 和 stream 创建一个文件,当它们进入时,这些文件的字符串。我真的很想避免在 memory 中将所有 batchID 字符串聚合在一起(它可能是 GB 的数据)和然后写入文件。

您可以对GroupByKey执行 GroupByKey,然后遍历写入文件的值。 GroupByKey的可迭代对象不需要适合 memory。

请注意,如果您正在编写文件,您可能需要写入一个临时位置,然后重命名以使文件具有幂等性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM