2017-01-23 74 views
1

我試着去創建一個最簡單的UDF到LAT的變換,長值,我從JDBC連接到麥哲倫點UDT得到閱讀空間數據的火花2 megallen

我想是這樣的(星火2.1):

val spark = SparkSession 
     .builder() 
     .master("local[2]") 
     .getOrCreate() 
     import spark.implicits._ 
     import org.apache.spark.sql.functions.udf 
     val df = Seq((30.1,32.2,new PointUDT())).toDF("lat","long","point") 
     val toPointUDF = udf{(x:Double,y:Double) => new PointUDT.serialize(Point(x,y)) } 
     val result = df.withColumn("point",toPointUDF($"point")).take(1) 
     result must beEqualTo(Point(30,10)) 

遺憾的是它不經過編譯... 獲得「PointUDT是從這個地方人跡罕至」

我怎樣才能使這項工作?

回答

0

我現在有類似的問題。 我正在嘗試從lat lon創建一個PostGIS點。

我需要將其合併到現有的表中。 我也有問題,我沒有找到一個簡單的方法來做upsert = insert/update。

到目前爲止,我最好的解決方案是將輸出寫入臨時表。刪除臨時表中的重複項,並從臨時表執行一個upsert,以將目標表也轉換爲PostGIS幾何列。