gpt4 book ai didi

在 PySpark 中使用 collect_list 时 Java 内存不足

转载 作者:可可西里 更新时间:2023-11-01 16:37:48 25 4
gpt4 key购买 nike

我目前正在使用 PySpark 并在包含大约 6 亿条记录的表上运行查询。该表本身约为 300gb。我的查询看起来像这样:

select f1, collect_list(struct(f2, f3)) as fdata
from table
group by 1

目前,我收到此错误:

# java.lang.OutOfMemoryError: Java heap space
# -XX:OnOutOfMemoryError="kill -9 %p"
# Executing /bin/sh -c "kill -9 1010"...
Killed

另一件事是 (f2, f3) 元组的分布不均匀。一些 f1 可能有 100k 个这样的元组,而其他一些 f1 可能只有 5 个。我怀疑 collect_list 导致了一些问题。

我总是可以增加簇的大小,但我想知道我是否可以对表做一些事情。按 f1 划分也不是一种选择,因为它具有非常高的维度。我没有太多使用 Spark 或 Hive 的经验,因此我们将不胜感激。

最佳答案

您显然正试图将一个巨大结果集的所有行加载到内存中。

I suspect collect_list is causing some issues.

这很可能是正确的。

解决方案要么是增加堆大小1,要么改变处理结果集的方式,这样您就不需要全部保留同时在内存中。


1 - ... 并且可能需要更多内存、更大的机器等。您可以看到它的发展方向。

关于在 PySpark 中使用 collect_list 时 Java 内存不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48393490/

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