用megallen读取spark 2中的空间数据

时间:2017-01-23 19:07:09

标签: scala apache-spark geospatial

我试图创建最简单的udf来将lat,long值转换为我从JDBC连接到magellan点UDT

的值

我试过这样的东西(Spark 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无法从这个地方进入”

我该如何做到这一点?

1 个答案:

答案 0 :(得分:0)

我现在遇到类似的问题。 我正在尝试从lat lon创建一个PostGIS点。

我需要将它合并到现有表中。 我也有一个问题,我没有找到一个简单的方法来做upsert = insert / update。

我到目前为止最好的解决方案是将输出写入临时表。删除临时表中的重复项,并从临时表执行upsert到目标表,该目标表也将lat lon转换为PostGIS几何列。