使用Spark/Java的ST_WITHIN [英] ST_WITHIN using Spark / Java
本文介绍了使用Spark/Java的ST_WITHIN的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有以下数据框:
+-------------+-----------------+------------------+
|longitude |latitude |geom |
+-------------+-----------------+------------------+
|-7.07378166 |33.826661 [00 00 00 00 01 0..|
|-7.5952683 |33.544191 [00 00 00 00 01 0..|
+-------------+-----------------+------------------+
我正在使用以下代码:
Dataset<Row> result_f = sparkSession.sql("select * from data_f where ST_WITHIN(ST_GeomFromText(CONCAT('POINT(',longitude_f,' ',latitude_f,')',4326)),geom)");
result_f.show();
但是出现以下错误:
java.lang.ClassCastException: [B cannot be cast to org.apache.spark.sql.catalyst.util.ArrayData
at org.apache.spark.sql.geosparksql.expressions.ST_Within.eval(Predicates.scala:105)
编辑
longitude : Double type
latitude : Double type
geom : Binary type
有什么主意吗?我需要你的帮助
Any idea ? I need your help
谢谢
推荐答案
我不认为ST_GeomFromText可用于从文本构造几何,但是有:
I don't think ST_GeomFromText is availble as constructing a geometry from text however there are:
- ST_GeomFromWKT
- ST_GeomFromWKB
- ST_GeomFromGeoJSON
- ST_Point
- ST_PointFromText
- ST_PolygonFromText
- ST_LineStringFromText
- ST_PolygonFromEnvelope
- ST_Circle
我建议使用 ST_Point
或 ST_PointFromText
,然后使用谓词 ST_WITHIN
I suggest to use either ST_Point
or ST_PointFromText
and after that the predicate ST_WITHIN
类似这样的东西:
Dataset<Row> result_f = sparkSession.sql("select * from data_f where ST_WITHIN(ST_Point(CAST(data_f.latitude AS Decimal(24,20)), CAST(data_f.longitude AS Decimal(24,20))),geom)");
result_f.show();
这篇关于使用Spark/Java的ST_WITHIN的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文