首页 > 解决方案 > Java Spark 程序中的 Pyspark UDF

问题描述

有什么方法可以将 pyspark 中创建的 UDF 用于 Java Spark 作业

我知道有一种方法可以将 Java UDF 用于 pyspark,但我正在寻找其他方法

标签: apache-sparkpysparkapache-spark-sql

解决方案


首先,我不得不说我不建议你这样做。对于 UDF 来说,这听起来有很大的延迟,我真的建议您尝试用 Scala / Java 编写 UDF。

如果您仍想这样做,方法如下:您应该编写一个创建 Python 解释器并执行您的代码的 UDF。这是一个 Scala 代码示例:

System.setProperty("python.import.site", "false")
val interpreter = new PythonInterpreter
interpreter.exec("from __builtin__ import *")
// execute a function that takes a string and returns its length
val someFunc = interpreter.get("len")
val result = someFunc.__call__(new PyString("Test!"))
val realResult = result.__tojava__(classOf[Integer]).asInstanceOf[Int]
print(realResult)

此代码调用lenPython 函数并在字符串中返回其结果"Test!"

我真的认为这会导致你的工作表现不佳,你应该重新考虑这个计划。


推荐阅读