是否存在针对“ org.apache.spark.SparkException的解决方法:Kryo序列化失败:缓冲区溢出。可用:0,是否需要:n”错误?

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

我正在通过spark-submit运行pyspark作业,在该作业中,在应用某些附加逻辑之前,先将两个大型拼花板表连接在一起。提交后,所有任务均失败,日志显示以下内容:

Caused by: org.apache.spark.SparkException: Kryo serialization failed: Buffer overflow. Available: 0, required: n*. To avoid this, increase spark.kryoserializer.buffer.max value

* n只是一个变量,代表需要多少内存。此值取决于我将spark.kryoserializer.buffer.max设置为多少。

我将该参数的值增加到2047 mb,我不再遇到错误,该作业在ApplicationMaster作业跟踪器中显示为“ Complete”,但该作业仍在控制台和纱线上显示为“正在运行”。] >

正在运行的作业的上下文:

对于上下文,这是我在做什么。我正在处理大量URL,并将它们与第一个URL字符串中包含第二个URL字符串的匹配条件连接到相同的确切列表。例如:www.google.com将与www.google.com和www.google.com/1和www.google.com/1/2匹配URL_Hierarachy = URL_1.join(URL_2,URL_1.url1 == URL_2.url2。 substr(URL_1.numone,URL_1.nchar_url1),'left')其中numone和nchar_url1用于定义第一个URL的长度。这将比最初的93M产生更多的记录。

我正在通过spark-submit运行pyspark作业,在该作业中,在应用某些附加逻辑之前,先将两个大型拼花板表连接在一起。提交后,所有任务都会失败,并且...

apache-spark pyspark apache-spark-sql pyspark-sql
1个回答
0
投票

从某种意义上讲,此错误是令人误解的,通常导致此错误的原因是,并行性/分区数量不均匀,那么您更有可能需要大容量的数据进行序列化/反序列化。

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