开源地理空间UDF(二)

133 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第6天,点击查看活动详情

我要一步一步往上爬~大家好我是青三阿,今天我们来一起学习一下开源地理空间UDF如何部署环境以及使用吧。

1. 编译

1.1 解压安装包

image.png

  • 或者使用Git clone命令

git clone https://github.com/Esri/spatial-framework-for-hadoop.git

  • 解压项目包

image.png

1.2 配置POM、Maven构建

  1. 有自己的仓库可以在pom.xml文件中做配置
  2. 配置完后进行maven构建,命令如下: mvn package -DskipTests -Dmaven.test.skip=true -P java-8,hadoop-2.7,hive-2.1
  • 构建完成后,在hive/target目录下有构件好的jar包spatial-sdk-hive-2.2.1-SNAPSHOT.jar,此JAR包包含开源地理空间UDF的所有方法。
  • 在json/target目录下也有构件好的jar包,spatial-sdk-json-2.2.1-SNAPSHOT.jar

1.3 下载项目需要的依赖

命令如下: Wget https://repo1.maven.org/maven2/com/esri/geometry/esri-geometry-api/2.2.0/esri-geometry-api-2.2.0.jar

2. 测试使用

这里使用的是GIS工具包样例数据的两张表:

  • 地震数据earthquakes.csv
  • 多边形数据california-counties.json

2.1 启动HIVE

在hive服务的路径下,用./hive命令启动hive服务

2.2 添加AJR包

之前准备好的几个JAR包需要拷贝到hive目录下,之后通过如下命令将依赖JAR包上传至目标项目:

  • add jar spatial-sdk-hive-2.2.1-SNAPSHOT.jar;
  • add jar spatial-sdk-json-2.2.1-SNAPSHOT.jar;
  • add jar esri-geometry-api-2.2.0.jar;

2.3 注册临时函数

注册函数格式如下,所有可用的UDF地址在这里create temporary function ST_Point as 'com.esri.hadoop.hive.ST_Point';

2.4 数据表上传HDFS

  • hadoop fs -put earthquakes.csv /tmp/
  • hadoop fs -put california-counties.json /tmp/

2.5 创建HIVE表

CSV格式是被Hive原生支持的

image.png

EsriJsonSerDe允许将 ArcGIS 生成的 JSON 映射为 Hive 表架构定义中的行和列。

image.png

2.6 加载数据

image.png

2.7 写测试语句

image.png

结果如下图所示:

image.png

ST_Contains UDF描述了每个国家中发生地震的坐标个数

更多的测试用例可以参考这里

3.总结

这篇文章详细的描述了使用上的一些细节问题,可以跟着去操作,有什么问题欢迎和我交流~