2017-01-23 2 views
1

ImはLAT変換する最も簡単なUDFを作成しようとスパーク2に空間データを読み、それに長い値は、私はmegallen

私はこのような何かを試してみましたが(2.1スパーク)マゼランポイントUDTへのJDBC接続から取得:

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を実行して、lat lonをPostGISジオメトリカラムに変換します。