GeoSpark
是基于Spark之上的分布式群集计算系统。GeoSpark扩展了Spark Core和SparkSQL并提出了空间弹性分布式数据集(Spatial Resilient Distributed Datasets (SRDDs))同时提供了可视化组件。简而言之就是可以利用它在Spark上做空间运算。能够基于经纬度等信息创建点(Point)线(LineString)面(Polygon)。并提供了几种空间查询:空间临近查询(Spatial KNN Query)、空间范围查询( Spatial Range Query)、空间连接查询(Spatial Join Query)和距离连接查询(Distance Join Query)。
前言
由于项目需要处理一些地理空间数据,而原生Spark不能满足,这几天捣鼓GeoSpark有一些收获,开个坑总结一下。
GeoSpark介绍
GeoSpark是基于Spark之上的分布式群集计算系统。GeoSpark扩展了Spark Core和SparkSQL并提出了空间弹性分布式数据集(Spatial Resilient Distributed Datasets (SRDDs))同时提供了可视化组件。简而言之就是可以利用它在Spark上做空间运算。能够基于经纬度等信息创建点(Point)线(LineString)面(Polygon)。并提供了几种空间查询:空间临近查询(Spatial KNN Query)、空间范围查询( Spatial Range Query)、空间连接查询(Spatial Join Query)和距离连接查询(Distance Join Query)。
环境准备
JDK 1.8
Scala 2.11.x
Pom依赖
Idea创建简单的scala maven项目即可,然后配置Pom依赖
注意,GeoSpark的版本一定要和相应的Spark版本对应,怎么对应呢?
官方给出了一份说明:
https://datasystemslab.github.io/GeoSpark/download/GeoSpark-All-Modules-Maven-Central-Coordinates/
可以看到不同的spark对应的geospark-sql的artifactId后缀版本不一样!
同时我们也可以看出官方对spark的支持最新是到spark 2.3,所以避免踩坑笔者用了这个版本,其他版本未测试。
1 | <properties> |
尝鲜
新建一个CSV文件checkin.csv:
1 | -88.175933,32.360763,gas |
Code:
1 | package com.suddev.bigdata.core |
Output: