【发布时间】:2021-03-16 06:26:25
【问题描述】:
我在 s3 中有一个文件夹(路径 = mnt/data/*.json),其中包含数百万个 json 文件(每个文件小于 10 KB)。我运行以下代码:
df = (spark.read
.option("multiline", True)
.option("inferSchema", False)
.json(path))
display(df)
问题是它非常慢。 Spark 通过一项任务为此创建一个作业。该任务似乎没有更多的执行程序运行它,这通常表示作业完成(对吗?),但由于某种原因,DataBricks 中的命令单元仍在运行。它已经像这样卡了10分钟。我觉得这么简单的事情应该不会超过 5 分钟。
注意事项:
- 由于有数百万个 json 文件,我不能肯定地说它们具有完全相同的结构(可能存在一些差异)
- json 文件是从同一个 REST API 网络抓取的
- 我在某处读到 inferSchema = False 可以帮助减少运行时间,这就是我使用它的原因
- AWS s3 存储桶已经挂载,所以绝对不需要使用 boto3
【问题讨论】:
-
可能只是文件 I/O 慢...请注意,如果您不推断架构,默认情况下所有列都将变为字符串类型。
-
如何知道是不是这样?如果是,如何解决?
标签: apache-spark amazon-s3 pyspark apache-spark-sql databricks