【发布时间】:2021-08-27 03:03:22
【问题描述】:
配置:
火花 3.0.1
Cluster Databricks(Driver c5x.2xlarge, Worker (2) 同驱动)
来源:S3
格式:镶木地板
大小:50 mb
文件数:2000(太多小文件,因为它们从 kinesis 流中以 1 分钟的批次转储,因为我们不能有更多的延迟 99)
问题陈述:我有 10 个作业,它们的配置和处理的数据量与上述相似。当我单独运行它们时,它们每个需要 5-6 分钟,包括集群启动时间。
但是当我一起运行它们时,它们似乎都卡在代码中的同一点,需要 40-50 分钟才能完成。
当我检查 spark UI 时,我看到,所有作业都花费了 90% 的时间来计算源数:
df = spark.read.parquet('s3a//....') df.cache() df.count() ----- 有问题的步骤....更多代码逻辑
现在我知道在进行缓存之前进行计数对于镶木地板文件应该更快,但是如果我在计数之前不缓存数据帧,它们会花费更多时间,这可能是因为小文件数量巨大。
但我不明白的是,一次运行一项作业如何运行得更快?
S3 是我的瓶颈吗?它们都从同一个存储桶中读取,但路径不同。
** 我正在使用 privecera 令牌进行身份验证。
【问题讨论】:
标签: apache-spark amazon-s3 databricks parquet