GeoSpark显示SQL结果失败

问题描述

我正在使用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() 

查询工作正常,但是在尝试显示结果时失败。好像是库中的输出问题。我正在齐柏林飞艇笔记本上进行此操作。有人可以告诉我我做错了吗?我在下面看到错误

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(Iterator.scala:891) 在scala.collection.AbstractIterator.foreach(Iterator.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)

解决方法

我知道我来晚了,但这由开发人员here解决。需要使用constructor

转换几何形状

示例修复程序:

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...