- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有一个执行大型连接的 Spark 应用程序
val joined = uniqueDates.join(df, $"start_date" <= $"date" && $"date" <= $"end_date")
然后将生成的 DataFrame 聚合为一个可能有 13k 行的数据帧。在加入过程中,作业失败并显示以下错误消息:
Caused by: org.apache.spark.SparkException: Job aborted due to stage failure: Total size of serialized results of 78021 tasks is bigger than spark.driver.maxResultSize (2.0 GB)
这是在没有设置 spark.driver.maxResultSize
之前发生的,所以我设置了 spark.driver.maxResultSize=2G
。然后,我对连接条件稍作更改,错误再次出现。
编辑: 在调整集群大小时,我还将 DataFrame 在 .coalesce(256)
中假设的分区数量翻了一番,使其变为 .coalesce(512 )
,所以我不能确定不是因为这个。
我的问题是,既然我没有向驱动程序收集任何东西,为什么 spark.driver.maxResultSize
在这里很重要?驱动程序的内存是否用于我不知道的连接中的某些内容?
最佳答案
仅仅因为您没有明确收集任何东西并不意味着没有收集任何东西。由于问题发生在连接期间,最可能的解释是执行计划使用广播连接。在这种情况下,Spark 会先收集数据,然后再广播它。
取决于配置和管道:
spark.sql.autoBroadcastJoinThreshold
小于 spark.driver.maxResultSize
。要确定广播是否确实是问题,请检查执行计划,如果需要,删除广播提示并禁用自动广播:
spark.conf.set("spark.sql.autoBroadcastJoinThreshold", -1)
关于scala - 超过 `spark.driver.maxResultSize` 而不给驱动程序带来任何数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42774845/
当我为我的项目运行“mvn dependency:tree”时,它显示如下: [INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ x
我调用 ajax 的脚本 function search_func(value) { $.ajax({ type: "GET", url: "sample.php
我正在使用 SIM 安装 Sitecore 8.1,但在打开启动板时,由于 ajax 请求返回 HTTP 500 错误,出现了几个 Javascript 错误。查看开发人员工具会显示以下消息: htt
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我有一张 table : +-----------+-------------+------+-----+---------+-------+| Field | Type | N
所以,我对这个阵列很生气,第 2 天让我感到疼痛 *.... 我正在开发面向对象的 PHP 脚本。 我得到一个数组: Array ( [0] => Project Object ( [project_
我正在尝试将我的一个 Rails 项目升级到 Ruby 1.9.2。一切进展顺利,但一个 RSpec 测试失败了。在这个测试中,我需要一个Ruby lib: # file spec/models/my
我可以使用 Maven 的插件 spring-boot:run 运行 Spring Boot,但是当我尝试执行打包的 jar 时,它给出: Error creating bean with name
我是一名优秀的程序员,十分优秀!