Утверждение не удалось при искре с использованием GeoSpark - PullRequest
0 голосов
/ 01 августа 2020

У меня есть следующий фрейм данных:

+--------------+-------------------+---------------------+
|longitude_f   |  latitude_f       |   geom              |
+--------------+-------------------+---------------------+
|7.0737816     |33.82666           |   00 00 00 00 01 0..|
|-7.6198783    |33.5942549         |   00 00 00 00 01 0..|
+--------------+-------------------+---------------------+

longitude_f : double ----
latitude_f  : double ----
geom        : geometry ----

Когда я выполняю следующий код:

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();

, я получаю следующее исключение:

20/08/01 19:50:36 ERROR Executor: Exception in task 87.0 in stage 40.0 (TID 930)
java.lang.AssertionError: assertion failed
at scala.Predef$.assert(Predef.scala:156)
at org.apache.spark.sql.geosparksql.expressions.ST_PolygonFromEnvelope.eval(Constructors.scala:250)
at org.apache.spark.sql.geosparksql.expressions.ST_Within.eval(Predicates.scala:105)
at org.apache.spark.sql.catalyst.expressions.GeneratedClass$SpecificPredicate.And_0$(Unknown Source)
at org.apache.spark.sql.catalyst.expressions.GeneratedClass$SpecificPredicate.eval(Unknown Source)
at org.apache.spark.sql.execution.joins.CartesianProductExec$$anonfun$doExecute$1$$anonfun$2.apply(CartesianProductExec.scala:89)
at org.apache.spark.sql.execution.joins.CartesianProductExec$$anonfun$doExecute$1$$anonfun$2.apply(CartesianProductExec.scala:88)

I нужна ваша помощь.

Спасибо

1 Ответ

0 голосов
/ 02 августа 2020

ST_PolygonFromEnvelope принимает 4 аргумента, и у них есть утверждение, которое не работает.

assert(inputExpressions.length == 4)

предоставить 4 входных аргумента этой функции и продолжить. Кстати, я бы посоветовал загрузить кислый файл из git и проверить его. Также обратитесь к документации, я думаю, вы этого не делаете

...