如何使用 Java 调用 Groovy 或 Scala UDF 来更新 Oracle?

Posted

技术标签:

【中文标题】如何使用 Java 调用 Groovy 或 Scala UDF 来更新 Oracle?【英文标题】:How to call Groovy or Scala UDF to update Oracle, using Java? 【发布时间】:2017-06-13 07:26:49 【问题描述】:

我有一个到 Oracle 数据库的 JDBC 连接。我还有一些用 Groovy 或 Scala 编写的函数 f(x)。例如,f(x) 只返回 2x。

现在我的问题是:我应该如何在我的 Java 代码中调用这个 f(x),将 f(x) 应用于列中的所有值,并在上面的示例中将此列更新为 2x?

【问题讨论】:

【参考方案1】:

您可以使用withColumn api 来更新列的值。

如果你的函数返回一个常量lit 应该是一个不错的选择。你也可以找到很多functions。

你也可以使用udf函数

def func = udf((column: Int)=> 2*column)
dataframe.withColumn("column1", func(dataframe("column1")))

udf 函数需要序列化和反序列化列值。所以如果应该首选其他功能。

【讨论】:

谢谢!但这是使用 Spark,对吗?我的问题是我的大部分代码都是用 Java 编写的。我正在使用JDBC连接Oracle,希望能够调用用Groovy/Scala等其他语言编写的函数。 是的,没错。解决方案是火花。但您也可以将 udf 用于其他情况,因为 udf 最初是为 hive 创建的。

以上是关于如何使用 Java 调用 Groovy 或 Scala UDF 来更新 Oracle?的主要内容,如果未能解决你的问题,请参考以下文章

java程序员为啥使用Groovy

GroovyGroovy 动态语言特性 ( Groovy 中的变量自动类型推断以及动态调用 | Java 中必须为变量指定其类型 )

使用 Groovy 或 Java 将日志发送到 Syslog 服务器

如何将Groovy String集合转换为Java String Array?

GroovyGroovy 脚本调用 ( Java 类中调用 Groovy 脚本 )

我如何在 java 方法中运行 spock groovy 测试