【问题标题】:GeoSpark show SQL results failsGeoSpark 显示 SQL 结果失败
【发布时间】:2021-01-06 02:27:51
【问题描述】:

我正在使用 GeoSpark 1.3.1,我正在尝试查找 POLYGON 中包含的所有地理点。我使用sql命令:

val result = spark.sql(
    |SELECT *
    |FROM spatial_trace, streetCrossDf
    |WHERE ST_Within (streetCrossDf.geometry, spatial_trace.geometry)
    """.stripMargin)

result.show() 

查询工作正常,但是当我尝试显示结果时失败。似乎是图书馆的输出问题。我在 zeppelin notebook 中这样做。有人可以告诉我我做错了什么吗?我收到以下错误:

org.apache.spark.SparkException:作业因阶段失败而中止:阶段 10.0 中的任务 0 失败 4 次,最近一次失败:阶段 10.0 中丢失任务 0.3(TID 15、10.42.22.236、执行程序 3):java .lang.ClassCastException:org.apache.spark.unsafe.types.UTF8String 不能转换为 org.apache.spark.sql.catalyst.util.ArrayData 在 org.apache.spark.sql.geosparksql.strategy.join.TraitJoinQueryExec$$anonfun$toSpatialRdd$1.apply(TraitJoinQueryExec.scala:164) 在 org.apache.spark.sql.geosparksql.strategy.join.TraitJoinQueryExec$$anonfun$toSpatialRdd$1.apply(TraitJoinQueryExec.scala:163) 在 scala.collection.Iterator$$anon$11.next(Iterator.scala:410) 在 scala.collection.Iterator$class.foreach(Ite​​rator.scala:891) 在 scala.collection.AbstractIterator.foreach(Ite​​rator.scala:1334) 在 scala.collection.TraversableOnce$class.foldLeft(TraversableOnce.scala:157) 在 scala.collection.AbstractIterator.foldLeft(Iterator.scala:1334) 在 scala.collection.TraversableOnce$class.aggregate(TraversableOnce.scala:214) 在 scala.collection.AbstractIterator.aggregate(Iterator.scala:1334) 在 org.apache.spark.rdd.RDD$$anonfun$aggregate$1$$anonfun$22.apply(RDD.scala:1122) 在 org.apache.spark.rdd.RDD$$anonfun$aggregate$1$$anonfun$22.apply(RDD.scala:1122) 在 org.apache.spark.SparkContext$$anonfun$36.apply(SparkContext.scala:2157) 在 org.apache.spark.SparkContext$$anonfun$36.apply(SparkContext.scala:2157) 在 org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:90) 在 org.apache.spark.scheduler.Task.run(Task.scala:121) 在 org.apache.spark.executor.Executor$TaskRunner$$anonfun$10.apply(Executor.scala:402) 在 org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1360) 在 org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:408) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 在 java.lang.Thread.run(Thread.java:748)

【问题讨论】:

    标签: apache-spark apache-spark-sql apache-zeppelin geospark


    【解决方案1】:

    我知道我来晚了,但这已由开发人员 here 解决。几何图形需要使用constructor进行转换

    修复示例:

    WHERE ST_Within (ST_GeomFromWKT(streetCrossDf.geometry), ST_GeomFromWKT(spatial_trace.geometry))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-19
      • 2018-10-08
      • 1970-01-01
      相关资源
      最近更新 更多