Apache spark 任务的序列化结果的总大小大于spark.driver.maxResultSize
你好 我正在运行一个用于解析一些日志文件的开发代码。如果我尝试解析更少的文件,我的代码将顺利运行。但是当我增加需要解析的日志文件的数量时,它将返回不同的错误,例如Apache spark 任务的序列化结果的总大小大于spark.driver.maxResultSize,apache-spark,pyspark,Apache Spark,Pyspark,你好 我正在运行一个用于解析一些日志文件的开发代码。如果我尝试解析更少的文件,我的代码将顺利运行。但是当我增加需要解析的日志文件的数量时,它将返回不同的错误,例如打开的文件太多,任务序列化结果的总大小大于spark.driver.maxResultSize 我试图增加spark.driver.maxResultSize的 你能告诉我如何解决这个问题吗 谢谢 任务序列化结果的总大小大于spark.driver。maxResultSize表示当执行器试图将其结果发送给驱动程序时,它超过了spark.
打开的文件太多
,任务序列化结果的总大小大于spark.driver.maxResultSize
我试图增加spark.driver.maxResultSize的
你能告诉我如何解决这个问题吗
谢谢
任务序列化结果的总大小大于spark.driver。maxResultSize
表示当执行器试图将其结果发送给驱动程序时,它超过了spark.driver.maxResultSize
。可能的解决方案如上@mayank agrawal所述,在您让它开始工作之前不断增加它(如果执行者试图发送太多数据,则不建议使用此解决方案)
我建议查看您的代码,看看数据是否有偏差,这使得执行者之一要做大部分工作,从而导致大量数据输入/输出。如果数据倾斜,您可以尝试重新分区
对于太多打开的文件问题,可能的原因是Spark可能在洗牌之前创建了许多中间文件。如果在executor/high parallelism中使用了太多的内核或唯一密钥,则可能会发生这种情况(在您的情况下,可能是因为输入文件数量太多)。需要研究的一个解决方案是通过以下标志合并大量中间文件:--conf spark.shuffle.consolidateFiles=true
(当您执行spark提交时
)
要检查的另一件事是这个线程(如果它与您的用例类似):在我的例子中,我将maxResultSize增加到比要求的1 gb以上,问题得到了解决。您的任务大小为5 gb。你能试着给6 gb一次吗?请显示代码…spark.shuffle.consolidateFiles
只有在你覆盖默认值,使用hashuffleManager
而不是默认值hashuffleManager
时才会有帮助,我认为它甚至不适用于spark 2.x