apache-spark - Spark:写入云存储的数据异常缓慢
问题描述
作为 pyspark 作业的最后阶段,我需要将 33Gb 的数据保存到 Cloud Storage。
我的集群在 Dataproc 上,由 15 个 n1-standard-v4 工作人员组成。我正在使用 avro 和用于保存数据的代码:
df = spark.createDataFrame(df.rdd, avro_schema_str)
df \
.write \
.format("avro") \
.partitionBy('<field_with_<5_unique_values>', 'field_with_lots_of_unique_values>') \
.save(f"gs://{output_path}")
我的工人统计:
奇怪的是,对于足够的分区大小,洗牌溢出是巨大的:
我想问的问题如下:
如果这个阶段需要 1.3 小时并且工人完成他们的工作 25 分钟 - 这是否意味着驱动程序将 50 分钟写入 GCS?
考虑到没有使用缓存、持久化,是什么导致了这种大小的 shuffle 溢出?
为什么舞台需要这么长时间?
更新:
SQL 选项卡:
解决方案
推荐阅读
- docker - Docker 图像与简单的 python 服务相比太大了
- reactjs - React:状态不会立即更新,即使使用 prevState 和 useEffect
- calculated-field - Tableau - 使用基于金额支出的新销售模型计算字段
- ios - Flutter iOS:如何修复“无法构建模块`firebase_core`”?
- javascript - 如何在连接聊天组之前或连接聊天组时获取旧聊天消息?信号R
- android - Cardview 没有扩展
- notifications - Bamboo 集成的 Slack Notifications 是否与 Atlassian Bamboo 版本 8.0.0 兼容?
- debugging - 如何更改 Google Apps 脚本调试器中的变量值
- python - 是否可以从我使用 paramiko 的系统 ssh 进入另一个系统?
- firebase - Firebase Analytics 过滤器选项不可用