【问题标题】:Undefined function: 'ST_GeomFromText' Using Spark / Java未定义的函数:'ST_GeomFromText' 使用 Spark / Java
【发布时间】:2020-10-30 00:28:15
【问题描述】:

我有以下数据框

------------------------------------------------------
|longitude  | latitude  | geomType |    geom          |
------------------------------------------------------    
|-7.0737816 |33.82666166|Polygon   |[GEOMETRY - 113 o]|
-------------------------------------------------------

我想在这个数据框上应用这个查询

我使用下面的代码

dataframe= sparkSession.sql("select ST_GeomFromText('POINT("+col("longitude")+" , '',"+col("latitude")+")')");

我收到此错误

Exception in thread "main" org.apache.spark.sql.AnalysisException: Undefined function: 'ST_GeomFromText'. This function is neither a registered temporary function nor a permanent function registered in the database 'default'.

请注意,我在 spark 上使用 java 语言

我需要你的帮助。

谢谢

【问题讨论】:

  • ST_GeomFromText 未定义,您期待什么?你从哪里得到这个功能的?
  • 我在pom.xml中添加了依赖是不是不够? '''geospark-sql''' 依赖项
  • 不,它是 Postgres 扩展。此功能来自 PostGIS,如果您的数据库不是地理空间数据库,它将不起作用
  • 这能回答你的问题吗? How to enable Postgis Query in Spark SQL
  • 这能回答你的问题吗? ST_geomfromtext function using Spark / java

标签: java sql apache-spark geometry


【解决方案1】:

由于 ST_GeomFromText 不是 org.apache.spark.sql.functions 的一部分,因此它不会在内部识别它。 您需要首先为此函数定义 UDF。 意味着您需要定义该函数的定义,然后将该函数与 spark 注册为 UDF,然后只有您可以使用此函数。 您可以使用以下语法: sqlContext.udf.register("ST_GeomFromText", <name of function or definition of function>)

谢谢

【讨论】:

  • 我举了一个函数,它以数据框的两列(经度和纬度)为参数?
猜你喜欢
  • 2020-10-30
  • 1970-01-01
  • 2021-01-28
  • 1970-01-01
  • 1970-01-01
  • 2020-10-27
  • 2020-10-29
  • 2015-02-12
  • 2011-04-11
相关资源
最近更新 更多