【发布时间】:2019-06-04 16:33:59
【问题描述】:
我想处理 ~500 GB 的数据,分布在 64 个 JSON 文件,每个文件包含 5M 记录。基本上,Map(Pyspark) 对 300M 记录中的每一个都起作用。
为了测试我的 PySpark 地图功能,我设置了一个 google Dataproc 集群(1 个 master 5 个 worker 只测试一个 JSON 文件)。
这里的最佳做法是什么?
我应该复制主节点中的所有文件(以利用 Dataproc 中的 Hadoop 分布式文件系统)还是将文件保存在我的 GCS 存储桶中并将文件位置指向我的 Pyspark 中是否同样有效?
此外,我的代码导入了相当多的外部模块,这些模块已复制到我的 master 中,并且 import 在 master 中可以正常工作。将它复制到所有其他工作节点的最佳做法是什么,这样当 Pyspark 在这些工作节点中运行时,我不会收到导入错误。
我在谷歌云网站上阅读了几篇文章,但没有得到明确的答案。
我可以手动将外部模块复制到我的每个工作节点,但当我要处理至少 100 个节点时,我无法在生产中执行此操作。
【问题讨论】:
标签: apache-spark hadoop pyspark google-cloud-storage google-cloud-dataproc