apache-spark - 在 Spark DataFrame 中为给定行并行运行 UDF
问题描述
考虑以下数据框 API 代码:
df
.withColumn("resultA",expensiveUDF($"inputA"))
.withColumn("resultB",expensiveUDF($"inputB"))
.show()
两个 UDF 调用将按顺序运行,因为它们在同一个任务中。有没有办法让这些 UDF 调用同时运行?由于它们彼此独立,因此这应该不会太难。
我试图增加spark.task.cpus
,但这并没有解决问题。
我知道有一种方法可以在 UDF 代码中的 Spark 中使用多线程,但这不是我想要做的。
解决方案
您可以在一行中执行两个 withColumns
df
.withColumn("resultA_and_resultB",expensiveUDF($"inputA", $"inputB"))
.show()
修改昂贵的UDF 以具有许多参数。最后,该列可以分为两列。这样您就不必担心并行运行这两个语句。
推荐阅读
- docker - 我尝试在 docker 容器中使用 nginx 作为反向代理,但它不起作用
- amazon-web-services - 在 AWS 上托管需要帮助
- python - Not able to assign local variable value to Global variable in Python Selenium automation - POM
- c - addr2line 在 Ubuntu 20.04 之后可用吗?
- linux-device-driver - 什么是“phy_write_paged”函数中的 phy 页(物理层/phy 寄存器)
- java - 如何在 Quarkus Tuple.of() 方法中允许超过 6 个参数?
- laravel - Call to a member function getClientOriginalName() on boolean in laravel
- python - How can I adjust the bounds of the x tick values that are automatically chosen by matplotlib?
- python - Setting output variable in deep learning
- elixir - 如何将 LiveView 添加到现有的 Elixir/Phoenix 应用程序?