持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第6天,点击查看活动详情
我要一步一步往上爬~大家好我是青三阿,今天我们来一起学习一下开源地理空间UDF如何部署环境以及使用吧。
1. 编译
1.1 解压安装包
- 项目地址在这里,下载安装包。
- 或者使用Git clone命令
git clone https://github.com/Esri/spatial-framework-for-hadoop.git
- 解压项目包
1.2 配置POM、Maven构建
- 有自己的仓库可以在pom.xml文件中做配置
- 配置完后进行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原生支持的
EsriJsonSerDe允许将 ArcGIS 生成的 JSON 映射为 Hive 表架构定义中的行和列。
2.6 加载数据
2.7 写测试语句
结果如下图所示:
ST_Contains UDF描述了每个国家中发生地震的坐标个数
更多的测试用例可以参考这里
3.总结
这篇文章详细的描述了使用上的一些细节问题,可以跟着去操作,有什么问题欢迎和我交流~