首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PySpark非常缓慢地上传到运行在数据库上的S3

PySpark非常缓慢地上传到运行在数据库上的S3
EN

Stack Overflow用户
提问于 2019-05-06 16:31:00
回答 2查看 1K关注 0票数 1

我的ETL脚本从关系数据库中读取三个表,通过PySpark执行一些操作,并将其上传到我的S3桶(与S3a一起)。

下面是上传的代码:

代码语言:javascript
复制
dataframe.write.mode("overwrite").partitionBy("dt").parquet(entity_path)

我有大约200万行,写在S3上,在按日期('dt')划分的拼花文件中。

我的脚本需要两个多小时才能上传到S3 (这非常慢),并且它在集群中的Databricks上运行:

代码语言:javascript
复制
 3-8 Workers: 366.0-976.0 GB Memory, 48-128 Cores, 12-32 DBU

我的结论是上传的问题,我搞不懂是怎么回事。

更新:使用repartition('dt')执行时间缩短到20分钟。这对我有帮助,但我认为它应该在更短的时间内执行。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-09 21:56:06

随着我对这个问题的更新,添加repartition('dt')使执行时间减少到13到20分钟。

代码语言:javascript
复制
dataframe.write.mode("overwrite").partitionBy("dt").parquet(entity_path)

经过一些分析,我得出结论,集群正在处理上传序列化的文件,并且在S3中按日期顺序一个一个地上传文件。

因此,添加重新分区后,集群会在节点之间重新组织数据,并随机上传文件,从而使上传速度更快(从3小时到20分钟)。

这个解决方案帮了我。如果有人知道更好的方法或有任何贡献,我会很高兴知道。

票数 2
EN

Stack Overflow用户

发布于 2020-01-15 14:28:50

更多的工作人员将提供帮助,因为一个工人(作业)只能有一个s3连接。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56009135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档