是否有 Apache Beam 功能来收集固定数量的元素?

问题描述 投票:0回答:1

我对 Apache Beam 和 Dataflow 相当陌生,我想从具有

k
元素的
PCollection
中收集或“批量处理”
n
多个元素。在这种情况下,
n
不是固定数字并且
n > k
。例如,假设我的
PCollection
有 1000 个元素,我想创建最多 50 个随机元素的批次,因为我正在使用的 API 每次调用限制为 50 个元素。我知道批处理过程将是并行的,并且我也可以轻松地对我的 API 进行 20 个并行调用。

是否有内置组件/功能允许我这样做,或者您可以建议我一个自定义的

DoFn
允许我这样做吗?

我相信这可以通过

Combine
Partion
GroupByKey
的组合来解决,但我不知道如何将它们组合在一起。我正在寻找使用 Python 的解决方案。

我想通过为每个步骤创建一个组件来使用数据流来实现的目标(如果有帮助的话):

  1. 从 GCS 存储桶读取 CSV 文件。 CSV 文件包含 GCS 上的许多文本文件的路径。
  2. 从 GCS 存储桶中读取每个文本文件
  3. 将原始文本文件分解为 100 个字符的块
  4. 收集 50 个块,并使用收集到的 50 个块作为单个请求调用 API(这是我需要帮助的步骤)
  5. 将 API 的结果保存到数据库中。
python google-cloud-dataflow apache-beam apache-beam-io
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.