Pyspark Azure Synapse - kryoserializer 缓冲区溢出

问题描述 投票:0回答:1

我在使用 Azure Synapse Notebook 时遇到问题。我有一个大的 python 脚本,其中使用 Pandas Dataframe,我可以加载“parquet”文件,但我无法使用 toPandas() 转换为 pandas,因为抛出错误:

'org.apache.spark.SparkException: Kryo serialization failed: Buffer overflow'.

这不是一个巨大的数据,只是700万行和80列。

我已经尝试过:

  1. 向集群添加了更多资源但不起作用。

  2. 尝试修改缓冲区大小

from pyspark.sql import SparkSession


spark = SparkSession.builder \
    .appName("YourAppName") \
    .config("spark.serializer", "org.apache.spark.serializer.KryoSerializer") \
    .config("spark.kryoserializer.buffer.max", "512m") \  
    .getOrCreate()

但是它也不起作用。

  1. 减少列数,但不起作用。

唯一有效的是减少行,但这不是一个选项,我需要整个记录。

我也需要保留相同的代码(不更改为 pyspark)

我希望有人能知道如何解决它。

谢谢

python-3.x pandas dataframe apache-spark azure-synapse
1个回答
0
投票

刚刚解决了我自己的问题。看起来配置不能直接在笔记本中设置,而是在配置会话中设置。

所以基本上必须:管理 -> Apache Spark 配置 -> 新建

此后,必须添加到使用的 Spark 池中:管理 -> Spark Pool -> 点击三个点 -> Apache Spark 配置 -> 添加它

终于要发布了

配置

© www.soinside.com 2019 - 2024. All rights reserved.