Apache spark Pyspark:如何确保您的udf不会';不要分配给不同的工人

Apache spark Pyspark:如何确保您的udf不会';不要分配给不同的工人,apache-spark,pyspark,cluster-computing,Apache Spark,Pyspark,Cluster Computing,我在pyspark中编写了一个udf,它使用了一个带有索引的“for”循环(它大部分只需要几十次迭代,所以不会让我的代码慢那么多),函数需要工作的所有内容都传递给它 然而,有时我会得到一个索引超出范围的错误,有时我不会。(该功能基本上只在50%的时间内工作) 我的猜测是,这个错误来自这样一个事实:执行这个udf所需的不同任务可能分布在不同的节点之间,这可能会使索引失去顺序 有没有办法告诉spark我希望这些udf在一个工人身上执行 我没有在这里发布我的代码,因为我认为它不会有帮助,它非常复杂,而

我在pyspark中编写了一个udf,它使用了一个带有索引的“for”循环(它大部分只需要几十次迭代,所以不会让我的代码慢那么多),函数需要工作的所有内容都传递给它

然而,有时我会得到一个索引超出范围的错误,有时我不会。(该功能基本上只在50%的时间内工作)

我的猜测是,这个错误来自这样一个事实:执行这个udf所需的不同任务可能分布在不同的节点之间,这可能会使索引失去顺序

有没有办法告诉spark我希望这些udf在一个工人身上执行

我没有在这里发布我的代码,因为我认为它不会有帮助,它非常复杂,而且行数很多

希望有人知道为什么这种“索引超出范围”错误只发生一半时间

此外,如果有人能告诉我如何通过将索引打印到屏幕上或通过“纱线资源管理器”查看worker节点上打印的索引来调试它,也同样有帮助

亲切问候,,
Charles

您可以使用
(rdd/df).coalesce(1)
,但您确定要使用它吗?如果单个节点可以处理整个数据集,为什么需要Spark?我的数据集由2个变量分组,函数只是在组上迭代,因此每个节点都应该处理整数个组的迭代,这些组共享(相关)代码?