gpt4 book ai didi

hadoop - 在Spark中充分利用内存

转载 作者:行者123 更新时间:2023-12-02 20:44:04 25 4
gpt4 key购买 nike

我已经运行了一个Pyspark应用程序,并且尝试在代码中再次使用该数据帧时尝试保留该数据帧。

我正在使用以下内容:
sourceDF.persist(StorageLevel.MEMORY_AND_DISK_SER)
我正在处理30GB的数据。
我有3个节点,所有16 GB RAM和4个虚拟内核。
从Spark UI,我看到持久化后的内存大小要小得多。我希望它尽可能将缓存的数据存储在RAM内存中。

enter image description here

如何最好地利用RAM内存?

另外,任务的GC时间似乎很长。我该如何减少呢?

enter image description here

最佳答案

通过使用数据帧并通过序列化存储数据,您已经在充分利用内存。除了在缓存之前过滤出最终结果不需要的尽可能多的数据之外,您没有更多的事情要做。

垃圾收集很棘手。在使用Dataframe API和无类型转换时,催化剂将尽力避免不必要的对象创建。在使用数据框并遇到GC问题时,您实际上没有太多发言权。就性能和对象创建而言,某些操作本来会更昂贵,但是您只能使用类型化的数据集api和rdd api来控制这些操作。最好不要做您当前正在做的事情。如果GC确实是一个问题,那么您可以做的最好的事情就是使用JVM分析工具,查找哪些代码段创建了最多的对象并希望对其进行优化。此外,尝试尽可能减少数据偏斜,并在可能的情况下利用广播连接应有助于避免出现GC。

关于hadoop - 在Spark中充分利用内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48734725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com