我正在尝试使用 Cloud Dataflow 处理 Wikidata json 转储。
我已经从https://dumps.wikimedia.org/wikidatawiki/entities/latest-all.json.bz2下载了文件并将其托管到 GS 存储桶中。这是一个包含 json dicts 列表(每行一个)的大 (50G) .bz2 文件。
我知道 apache_beam.io.ReadFromText 可以处理 .bz2 (我在玩具数据集上测试过)并且 .bz2 是可拆分的。因此,我希望创建多个工作人员,这些工作人员将在该唯一文件的不同块上并行工作(我不完全清楚块是否/如何解决。
最终,我想对每一行(每个 json dict)进行一些分析,但作为摄取测试,我只是使用项目的 wordcount.py:
python -m apache_beam.examples.wordcount \
--input gs://MYBUCKET/wikidata/latest-all.json.bz2 \
--output gs://MYBUCKET/wikidata/output/entities-all.json \
--runner DataflowRunner \
--project MYPROJECT \
--temp_location gs://MYBUCKET/tmp/
在启动时,自动缩放会迅速将工作人员的数量增加 1->6,但只有一名工作人员可以做任何工作,然后几分钟后自动缩放会回缩 6->1(jobid:2018-10-11_00_45_54-9419516948329946918)
如果我禁用自动缩放并明确设置工作人员的数量,那么除了一个之外,所有工作人员都保持空闲状态。
可以在这种输入上实现并行性吗?非常感谢您的帮助。