gpt4 book ai didi

apache-spark - Spark Mllib FP 增长作业因内存错误而失败

转载 作者:行者123 更新时间:2023-12-04 21:10:55 25 4
gpt4 key购买 nike

我有一个相当简单的用例,但结果集可能非常大。我的代码执行以下操作(在 pyspark shell 上):

from pyspark.mllib.fpm import FPGrowth
data = sc.textFile("/Users/me/associationtestproject/data/sourcedata.txt")
transactions = data.map(lambda line: line.strip().split(' '))
model = FPGrowth.train(transactions, minSupport=0.000001, numPartitions=1000)
# Perform any RDD operation
for item in model.freqItemsets().toLocalIterator():
# do something with item

我发现每当我通过调用 count() 或 toLocalIterator 开始实际处理时,我的操作最终都会以内存不足错误结束。 FPGrowth 没有对我的数据进行分区吗?我的结果数据大到连一个分区都会占用我的内存吗?如果是,有没有一种方法可以将 RDD 以“流式”方式持久保存到磁盘,而无需尝试将其保存在内存中?

感谢您提供任何见解。

编辑: FPGrowth 的一个基本限制是整个 FP 树必须适合内存。因此,关于提高最低支持度阈值的建议是有效的。

-拉吉

最佳答案

好吧,问题很可能是支持阈值。当你像这里这样设置一个非常低的值时(我不会频繁地称百万分之一),你基本上就放弃了向下关闭属性的所有好处。

这意味着考虑的项目集数量呈指数增长,在最坏的情况下,它将等于 2N - 1m,其中 N 是项目的数量。除非您有一个包含非常少项目的玩具数据,否则它根本不可行。

编辑 :

请注意,对于大约 200K 事务(从评论中获取的信息)和支持阈值 1e-6,您数据中的每个项集都必须频繁出现。所以基本上你在这里要做的是枚举所有观察到的项集。

关于apache-spark - Spark Mllib FP 增长作业因内存错误而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34690682/

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