apache-spark - Java Spark 程序中的 Pyspark UDF
问题描述
有什么方法可以将 pyspark 中创建的 UDF 用于 Java Spark 作业
我知道有一种方法可以将 Java UDF 用于 pyspark,但我正在寻找其他方法
解决方案
首先,我不得不说我不建议你这样做。对于 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)
此代码调用len
Python 函数并在字符串中返回其结果"Test!"
。
我真的认为这会导致你的工作表现不佳,你应该重新考虑这个计划。
推荐阅读
- oracle - 避免在 Oracle 过程中频繁调用同一视图
- javascript - 在 Google 操作的 Auth 2.0 登录授权代码之后,未获取刷新令牌作为响应的一部分
- loopback - 环回将排序顺序重置为 ASC
- javascript - 有谁知道如何在Javascript中更改对象左侧和右侧的边框?
- java - DateTimeFormatter 不能应用于 (java.util.Date)
- javascript - 使用 find 语句设置标志值
- javascript - 无法识别 js 中 Google Drive 上的图片上传
- python - 我如何从 https://www.premierleague.com/players 获取有关过去 10 年球队名单的信息?
- mysql - 我在 SQL 中有一个列出所有事件的表。我想要那些在 30 天前记录了事件但之后没有记录的用户
- python-3.x - 如何在特定元素之后提取所有类“a”?