【发布时间】:2022-09-27 17:18:24
【问题描述】:
所以基本上我想通过我的数据框循环 n 次并在每个循环中应用一个函数 (执行连接)。 我的 test-Dataframe 就像 1000 行,在每次迭代中,只会添加一列。 前三个循环立即执行,然后它变得非常慢。 第 10 个循环例如需要10多分钟。
我不明白为什么会发生这种情况,因为我的 Dataframe 在行数方面不会变大。 如果我用 n=20 调用我的函数,例如,连接会立即执行。 但是当我迭代循环 20 次时,它很快就会卡住。
你知道什么可能导致这个问题吗?
-
您将不得不分享一些示例代码或您在数据框中尝试执行的操作。使用 Pyspark,您很可能能够删除循环并将所有内容包含在一个事务中。您应该能够为第一个循环定义逻辑,然后为下一个循环定义执行,它应该按该顺序执行。如果您在每次代码进入循环时分配一个新的 DF,您应该记住您的集群资源将在事务期间被阻塞
-
我添加了来自另一个主题的示例代码,该主题似乎面临我遇到的类似问题。他的解决方案是在每次迭代结束时将 DF 写入 HDFS,但我觉得这不是最好的解决方案。你是对的,在每次迭代中,我重新分配新的 DF,并在每个循环中添加列。你建议做什么。保存每次迭代的信息并将其与初始 DF 组合一次?
标签: apache-spark pyspark