小编mra*_*mah的帖子

从 PySpark 中的 S3 存储桶读取数百万个小型 JSON 文件非常慢

我在 s3 中有一个文件夹(path = mnt/data/*.json),其中包含数百万个 json 文件(每个文件小于 10 KB)。我运行以下代码:

df = (spark.read
           .option("multiline", True)
           .option("inferSchema", False)
           .json(path))
display(df)
Run Code Online (Sandbox Code Playgroud)

问题是它非常慢。Spark 通过一个任务为此创建一个作业。该任务似乎没有更多执行程序在运行,这通常意味着作业已完成(对吗?),但由于某种原因,DataBricks 中的命令单元仍在运行。就这样卡了10分钟了。我觉得这么简单的事情应该不会超过5分钟。

Spark 作业的屏幕截图

需要考虑的注意事项:

  • 由于有数百万个 json 文件,我不能自信地说它们将具有相同的精确结构(可能存在一些差异)
  • json 文件是从相同的 REST API 中抓取的
  • 我在某处读到 inferSchema = False 可以帮助减少运行时间,这就是我使用它的原因
  • AWS s3存储桶已经安装,所以绝对不需要使用boto3

amazon-s3 apache-spark apache-spark-sql pyspark databricks

6
推荐指数
1
解决办法
7870
查看次数