首页 > 解决方案 > 在 Spark DataFrame 中为给定行并行运行 UDF

问题描述

考虑以下数据框 API 代码:

df
.withColumn("resultA",expensiveUDF($"inputA"))
.withColumn("resultB",expensiveUDF($"inputB"))
.show()

两个 UDF 调用将按顺序运行,因为它们在同一个任务中。有没有办法让这些 UDF 调用同时运行?由于它们彼此独立,因此这应该不会太难。

我试图增加spark.task.cpus,但这并没有解决问题。

我知道有一种方法可以在 UDF 代码中的 Spark 中使用多线程,但这不是我想要做的。

标签: apache-spark

解决方案


您可以在一行中执行两个 withColumns

df
.withColumn("resultA_and_resultB",expensiveUDF($"inputA", $"inputB"))
.show()

修改昂贵的UDF 以具有许多参数。最后,该列可以分为两列。这样您就不必担心并行运行这两个语句。


推荐阅读