在数据框 API 中使用 spark SQL udf

Posted

技术标签:

【中文标题】在数据框 API 中使用 spark SQL udf【英文标题】:use spark SQL udf in dataframe API 【发布时间】:2017-02-21 20:14:55 【问题描述】:

如何使用在 spark 中效果很好的 UDF,例如

sparkSession.sql("select * from chicago where st_contains(st_makeBBOX(0.0, 0.0, 90.0, 90.0), geom)").show

取自http://www.geomesa.org/documentation/user/spark/sparksql.html 通过 spark 的更安全的 scala 数据帧 API?

【问题讨论】:

【参考方案1】:

如果你已经创建了一个函数,你可以使用以下方法注册创建的 UDF:

sparksession.sqlContext.udf.register(yourFunction)

我希望这会有所帮助。

【讨论】:

【参考方案2】:

Oliviervs 我认为他正在寻找不同的东西。我认为 Georg 想在数据框的 select api 中按字符串使用 udf。例如:

val squared = (s: Long) => 
  s * s

spark.udf.register("square", squared)

df.select(getUdf("square", col("num")).as("newColumn")) // something like this

手头的问题是是否存在一个名为getUdf 的函数,可用于检索通过字符串注册的udf。乔治,对吗?

【讨论】:

;) 实际上我有一个库 (geospark) 并注册了一些函数,但丢弃/不存储 sparksession.sqlContext.udf.register 返回的引用,我想知道如何取回它们,即没有依赖随机字符串。

以上是关于在数据框 API 中使用 spark SQL udf的主要内容,如果未能解决你的问题,请参考以下文章