lU5*_*5er 6 apache-spark apache-spark-sql pyspark
我对 PySpark 比较陌生。我一直在尝试缓存 30GB 的数据,因为我需要对其进行聚类。因此,执行任何操作,就像count
最初我得到一些heap space issue. 所以我用谷歌搜索,发现增加执行程序/驱动程序内存对我有用。所以,这是我目前的配置
SparkConf().set('spark.executor.memory', '45G')
.set('spark.driver.memory', '80G')
.set('spark.driver.maxResultSize', '10G')
Run Code Online (Sandbox Code Playgroud)
但现在我得到了这个garbage collection issue。我查了SO,但到处都是很模糊的答案。人们建议玩配置。有没有更好的方法来确定配置应该是什么?我知道这只是一个调试异常,我可以将其关闭。但我仍然想学习一些数学来自己计算配置。
我目前在具有 256GB RAM 的服务器上。任何帮助表示赞赏。提前致谢。
您的服务器/集群有多少个核心?
这个 GC 错误说明 Spark 至少花费了 98% 的运行时间进行垃圾收集(从内存中清理未使用的对象),但在此过程中成功释放了 <2% 的内存。我不认为它是可以避免的,正如你所建议的,因为它表明内存几乎已满并且需要垃圾收集。抑制此消息可能很快就会导致内存不足错误。此链接将为您提供有关此错误含义的详细信息。正如您所提到的,解决它可以像搞乱配置设置一样简单,但这也可能意味着您需要修复代码。减少存储的临时对象数量、使数据帧尽可能紧凑(例如,将字符串编码为索引)以及在正确的时间执行联接或其他操作(内存效率最高)都会有所帮助。研究广播较小的数据帧以进行连接。在没有看到代码的情况下很难提出任何建议,这个资源也是如此。
对于您的 Spark 配置调整,此链接应提供您需要的所有信息。乍一看,您的配置设置似乎非常高,但我不知道您的集群设置。
| 归档时间: |
|
| 查看次数: |
6750 次 |
| 最近记录: |