如何在火花斯卡拉數據框(非文本)API中訪問幾何體UDF?即如何轉換在斯卡拉火花數據框中提供spark-sql UDF可用數據幀DSL API
如何使scala數據框DSL中可用的文本spark-sql API中提供sql UDF? 也就是說如何啓用此表達的,而不是類似於
df.select(st_asText(st_bufferPoint('geom, 10))).filter('case_number === 1)
spark.sql("select st_asText(st_bufferPoint(geom,10)) from chicago where case_number = 1")
東西如何的方式,這不僅適用於SQL文本模式寄存器geomesas UDF。 SQLTypes.init(spark.sqlContext)
從https://github.com/locationtech/geomesa/blob/f13d251f4d8ad68f4339b871a3283e43c39ad428/geomesa-spark/geomesa-spark-sql/src/main/scala/org/apache/spark/sql/SQLTypes.scala#L59-L66只似乎註冊文本表達式。
我已經導入
import org.apache.spark.sql.functions._
所以這些功能
應該可用。
但SQLTypes.init(spark.sqlContext)已經註冊了函數。那麼使用你的解決方案會是一個問題嗎? –
是的,但你失去了refrece即。如果該行是val ST_DistanceSpheroid:(Geometry,Geometry)=> jl.Double = nullableUDF((s,e)=> fastDistance(s.getCoordinate,e.getCoordinate))。您需要在DSL中使用ST_DistanceSpheroid –