pyspark 数据块- Photon内存不足

oxalkeyp  于 2023-11-16  发布在  Spark
关注(0)|答案(2)|浏览(127)

我尝试在启用光子的情况下使用databricks spark读取S3中的json文件目录。json目录的大小约为100 - 120 GB

df = (spark
         .read
         .option("multiline", True)
         .json(json_dir_path)
         .schema(json_schema)
        )

df.write.format('delta').saveAsTable("table_name")

字符串
这会抛出一个错误:

Caused by: org.apache.spark.memory.SparkOutOfMemoryError: Photon ran out of memory while executing this query.
Photon failed to reserve 1728.0 MiB for simdjson internal usage, in SimdJsonReader, in JsonFileScanNode(id=3618, output_schema=[string, string, array<struct<string, string, string, string>>, string, string, ... 1 more]), in task.


然而,这在光子未启用时有效。使用光子处理数据砖中的大型json文件时,需要指定什么配置吗?

bzzcjhmw

bzzcjhmw1#

我们最近在启用Photon的集群配置中遇到了一个问题。我们也开始耗尽内存。我们通过添加更多内存并减少执行器数量来“修复”它,因此每个执行器都有更多的可用内存。但回想起来,对于特定的工作流,最好是关闭Photon。

atmip9wb

atmip9wb2#

我们遇到了类似的情况,一个SQL查询6周前在XL无服务器仓库上运行良好,但现在即使在3XL或4XL无服务器仓库上也无法运行,尽管表大小增加了微不足道(从3.2 TB增加到3.3 TB)。错误(大约30秒后)是:

Photon ran out of memory while executing this query.
Photon failed to reserve 763.6 MiB for var-len data, in ShuffleExchangeSinkNode(id=1676, output_schema=[double, timestamp, timestamp, double, double, ... 17 more]), in task.
Memory usage:
Total task memory (including non-Photon): 1719.2 MiB
task: allocated 868.5 MiB, tracked 1719.2 MiB, untracked allocated 0.0 B, peak 1982.9 MiB
BufferPool: allocated 8.3 MiB, tracked 128.0 MiB, untracked allocated 0.0 B, peak 128.0 MiB
DataWriter: allocated 0.0 B, tracked 0.0 B, untracked allocated 0.0 B, peak 0.0 B
FileScanNode(id=1660, output_schema=[double, double, timestamp, double, double, ... 13 more]): allocated 6.1 MiB, tracked 737.1 MiB, untracked allocated 0.0 B, peak 737.8 MiB
BufferPool: allocated 6.1 MiB, tracked 737.1 MiB, untracked allocated 0.0 B, peak 737.1 MiB

字符串
最后,我们使用一个较小的集群(没有Photon)(集群大小大约等于XL无服务器仓库)来运行查询。然而,由于这是一个直接的SQL查询,我们更希望在无服务器仓库上运行,这样我们可以更好地访问更高性能的计算(和更好的日志记录)。

相关问题