2017-01-23 41 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几何列。