【发布时间】:2021-02-01 19:41:12
【问题描述】:
我有一个批处理数据解析作业,其中输入是一个 zip 文件列表,每个 zip 文件都有许多要解析的小文本文件。在 50 个 zip 文件中压缩 100Gb 的顺序,每个 zip 有 100 万个文本文件。
我在 Python 中使用 Apache Beam 的包并通过 Dataflow 运行作业。
我写成
- 从 zip 文件路径列表中创建集合
- FlatMap 具有为 zip 中的每个文本文件生成的函数(一个输出是从文本文件中读取的所有字节的字节字符串)
- ParDo 使用一种方法,该方法为文本文件中数据中的每一行/读取的字节数生成
- ...做其他事情,例如在某个数据库的相关表中插入每一行
我注意到这太慢了 - CPU 资源只使用了百分之几。我怀疑每个节点都在获取一个 zip 文件,但工作并未在本地 CPU 之间分配 - 所以每个节点只有一个 CPU 在工作。考虑到我使用的是 FlatMap,我不明白为什么会这样。
【问题讨论】:
标签: google-cloud-dataflow apache-beam dataflow