首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Maven UDF在Azure上运行数据库的GeoSpark?

使用Maven UDF在Azure上运行数据库的GeoSpark?
EN

Stack Overflow用户
提问于 2020-10-02 16:49:48
回答 1查看 468关注 0票数 1

我正在尝试Databricks@Azure和spark集群: Spark 3.0.0,Scala 2.12 On the cluster(!)我安装了: GeoSpark :1.3.1geospark- SQL _2.3:1.3.1受https://databricks.com/notebooks/geospark-notebook.html的启发我喜欢SQL并且想运行GeoSpark查询。

我运行以下代码(从Notebook):

代码语言:javascript
复制
%scala

import com.vividsolutions.jts.geom.{Coordinate, Geometry, GeometryFactory}
import org.datasyslab.geospark.formatMapper.shapefileParser.ShapefileReader
import org.datasyslab.geospark.spatialRDD.SpatialRDD
import org.datasyslab.geosparksql.utils.{Adapter, GeoSparkSQLRegistrator}
GeoSparkSQLRegistrator.registerAll(sqlContext)

当我运行此检查时:

代码语言:javascript
复制
%scala 
import org.apache.spark.sql.SparkSession
val spark = SparkSession
  .builder()
  .appName("Spark SQL UDF scalar example")
  .getOrCreate()


spark.catalog.listFunctions().filter("name like 'ST%P%' ").show(false)


/** spark.catalog.listTables().show() 
spark.sql("SELECT ST_Point(0,0) FROM ( VALUES (42) ) AS t(a); ").show() */

输出为:

代码语言:javascript
复制
|name                       |database|description|className                                                                |isTemporary|

|ST_NPoints                 |null    |null       |org.apache.spark.sql.geosparksql.expressions.ST_NPoints$                 |true       |

|ST_Point                   |null    |null       |org.apache.spark.sql.geosparksql.expressions.ST_Point$                   |true       |

...

但这是

代码语言:javascript
复制
    %sql
SELECT t.a, ST_Point(0,0) as p
FROM (VALUES (42)) AS t(a);

失败:

代码语言:javascript
复制
Error in SQL statement: NoClassDefFoundError: org/apache/spark/sql/catalyst/expressions/codegen/CodegenFallback$class

我到底做错了什么?

附言:我还试过:

代码语言:javascript
复制
CREATE FUNCTION ST_Point AS 'org.apache.spark.sql.geosparksql.expressions.ST_Point$';

带和不带结尾的美元符号。create function语句返回OK;但是,运行select including ST_point语句将返回:

代码语言:javascript
复制
 Error in SQL statement: AnalysisException: No handler for UDF/UDAF/UDTF 'org.apache.spark.sql.geosparksql.expressions.ST_Point$'; line 1 pos 12
EN

回答 1

Stack Overflow用户

发布于 2020-10-08 23:56:32

geospark 1.3.1似乎是为Spark 2.x构建的,请参见1,如果您需要使用Spark 3.x,请尝试升级到geospark 1.3.2,否则请尝试降级到spark 2.x。

1

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64168682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档