Как я могу получить доступ к выражению катализатора (не обычному UDF) в API Spark SQL scala DSL?
http://geospark.datasyslab.org допускает только текстовое исполнение
GeoSparkSQLRegistrator.registerAll(sparkSession)
var stringDf = sparkSession.sql(
"""
|SELECT ST_SaveAsWKT(countyshape)
|FROM polygondf
""".stripMargin)
Когда я пытаюсь использовать SQL Scala DSL
df.withColumn("foo", ST_Point(col("x"), col("y")))
Я получаю сообщение об ошибке типа несоответствие ожидаемый столбец получил ST_Point .
Что мне нужно изменить, чтобы правильно зарегистрировать catalyst expression
как объект, который можно вызывать напрямую через scala SQL DSL API?
редактировать
все выражения катализатора зарегистрированы через https://github.com/DataSystemsLab/GeoSpark/blob/fadccf2579e4bbe905b2c28d5d1162fdd72aa99c/sql/src/main/scala/org/datasyslab/geosparksql/UDF/UdfRegistrator.scala#L38:
Catalog.expressions.foreach(f=>sparkSession.sessionState.functionRegistry.createOrReplaceTempFunction(f.getClass.getSimpleName.dropRight(1),f))
edit2
import org.apache.spark.sql.geosparksql.expressions.ST_Point
val myPoint = udf((x: Double, y:Double) => ST_Point _)
не удается с:
_ must follow method; cannot follow org.apache.spark.sql.geosparksql.expressions.ST_Point.type