在数据框 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的主要内容,如果未能解决你的问题,请参考以下文章

如何在数据块中使用 Spark sql 连接 Spark 数据框列

在 pyspark 中使用 pandas_udf 过滤数据框

如何在Spark SQL中查询StringType的1个字段具有json值的数据框

pyspark 从 spark 数据框列创建一个不同的列表并在 spark sql where 语句中使用

Spark SQL Dataframe API - 动态构建过滤条件

在 spark 数据框中运行 UDF 时,不支持获取 org.apache.spark.sql.Column 类型的架构