1 追本溯源
官方学习
源代码github地址
sedona apidoc
spark apidoc
Sedona支持文件类型数据有: CSV,TSV,WKT,WKB,GeoJSON,NetCDF/HDF,ShapeFile
我是GeoSpark的作者。我的个人网站的Talk section里面有非常详细的教程讲解GeoSpark到底是做什么的。
简单来说:
GeoSpark provides distributed index and query.on spatial vector
data in Apache Spark. Spatia vector data includes point polygon
linestrings trajectories.
GeoMesa是一个基于Apache Accumulo key value
store的spatial index, also for spatial vector data.
GeoMesa里面的Spark核心部分是GeoSpark算法的再造轮子(GeoMesa的作者当面告诉我的)
GeoTrellies provides distributed query and map algebra on spatial raster data such as satellite imagery data.我是GeoSpark的作者。两个RDD之间做KNN,叫KNN join。分布式KNN join非常复杂非常慢,目前已有的开源系统都是提供近似查询。理论上百分百精确且性能最优的算法出自这篇论文,但是没有开源实现。Chatzimilioudis, Georgios, Constantinos Costa, Demetrios Zeinalipour-Yazti, Wang-Chien Lee, and Evaggelia Pitoura. “Distributed in-memory processing of all k nearest neighbor queries.” IEEE TKDE 2016
2 系统架构
![](https://i-blog.csdnimg.cn/blog_migrate/6b2c8ca344132fa7c64369312f9991b3.png)
3 源代码模块
Name | API | Introduction |
---|---|---|
Core | RDD | 提供 SpatialRDDS 和 查询操作等能力(SpatialRDDs and Query Operators. ) |
SQL | SQL/DataFrame | sedona的SQL接口,提供对 SQL/DataFrame的空间处理能力(SQL interfaces for Sedona core). |
Viz | RDD, SQL/DataFrame | Viz主要用于可视化SRDD( Spatial RDD) 和 DataFrame(Visualization for Spatial RDD and DataFrame)。主要用与转换Spatial RDD/Spatial DataFrame 为常用图片格式. GeoSparkViz 是大规模内存空间可视化系统,支持可视化Spatial RDD 和 Spatial Queries 查询结构。此模块支持生成 瓦片数据。 |
Zeppelin | Apache Zeppelin | sedona插件,可以可视化空间数据,对于小数据 可直接加载到 Zeppelin中进行可视化,对于大规模数据,需要首先通过GeoSparkViz进行数据处理,然后数据可视化(Plugin for Apache Zeppelin 0.8.1+) |
![](https://i-blog.csdnimg.cn/blog_migrate/ce29037746e72029a98b6e0c4f1448c5.png)
4 扩展
①PostGis为PostgreSql提供了空间数据类型,空间函数,空间索引,作为插件使PostGreSql成为了一个空间关系型数据库。
②Ganos同理为Hbase提供空间能力,使得Hbase成为了一个空间分布式数据库,但是不仅仅如此,数据库仅仅是存储,而Ganos还通过Spark进行数据分析。
③PolarDb底层通过存储集群的方式实现了按存储容量收费,避免Mysql按照2T的实例购买。首先抛开原理谈优点,相比Mysql实现了容量大,高性价比,分钟级弹性,读一致性,毫秒级延迟,无锁备份,复杂Sql查询加速。说白了是对标于Mysql的竞争产品。
④GeoHash通过一定的规则把经纬度二维坐标转换成一维编码,从而更加高效,同时在个别场景下有更好的用途。实质是个算法。
⑤GeoMesa被阿里进一步封装,形成了Ganos。GeoMesa同样是基于Hbase或者其他分布式数据库进行存储,基于Spark进行时空数据分析,两者说白了就是使用一定的方法(添加时空数据类型,添加时空函数等等)把时空数据与大数据组件如存储Hbase,计算Spark结合起来,使之成为能处理,存储,分析时空的大数据平台。
⑥在上面的场景下,GeoMesa不能处理时空栅格数据,那么就引入了GeoTrellis来处理时空栅格数据。可以说是对GeoMesa的补充。
⑦GeoMesa中空间处理部分Spark核心部分是GeoSpark算法的优化和改进。
⑧GeoWave作为Apache顶级项目Accumulo键值对数据库的spatial index,为Accumulo键值对数据库提供了空间能力的同时也提供了空间数据处理能力。
⑨lgnite可以看作分布式内存网格的一种实现,提供分布式计算的同时提供分布式内存存储(可以看作redis) ⑩Sphinx使用C++语言编写,作为一种基于Sql的全文检索引擎。与其对标的典型有 Lucene,Solr,ElstaticSearch。