C3bf28ed0ab8b65c582681fc76fec2c7
计算能力-空间计算GeoSpark

GeoSpark提供一个用于处理大规模空间数据的开源内存集群计算系统。基于传统GIS与Spark的结合。扩展RDD以形成空间RDD(SRDD),并跨机器高效地对SRDD数据元素进行分区,并引入新颖的并行化空间(几何操作,遵循Open Geosptial Consortium(OGC)标准)转换和操作(用于SRDD),提供更直观的界面供用户编写空间数据分析程序。扩展了SRDD层以在大规模的空间数据集上执行空间查询(例如,范围查询,KNN查询和连接查询)。在Spatial RDD图层中检索几何对象之后,用户可以调用在空间查询处理层中提供的空间查询处理操作。
空间计算由三个层组成,结构如下图所示:Apache Spark层、空间RDD层和空间查询处理层。

  • Apache Spark层
    Apache Spark层提供了基本的Spark功能,包括将数据加载到磁盘,以及reg的RDD操作
  • 空间RDD层
    空间RDD层由三种新颖的空间弹性分布式数据集(SRDDs)组成,它扩展了常规的Apache Spark RDD来支持几何和空间对象。提供了一个几何操作系统,它可以访问空间RDDs来执行ba-sic几何操作(例如,重叠、交叉)。系统用户可以利用新定义的SRDDs来在Spark中开发空间数据处理程序。
  • 空间对象支持(SRDDs)
    支持各种空间数据输入格式(例如,逗号分隔值、标签分隔值和知名文本)。不同于用户花时间在解析输入格式上的时间,用户只需指定格式名称和空间数据的开始列,会自动接管数据转换,并将处理的数据存储在空间中。在存储层,利用JTS拓扑套件来支持空间对象。每个空间对象都存储为一个点、一个矩形或多边形类型。就空间对象的类型而言,空间RDDs(SRDDs)定义如下: PointRDD。PointRDD支持所有的2D点对象(代表地球表面的点):h经度,纬度i。所有点在一个PointRDD中的所有点被Apache Spark层自动分割,并相应分配给机器。RectangleRDD。矩形支持矩形的ob-物体以下列格式:h点A(经度,纬度)和点B(经度,纬度)i。点A和点B在一个矩形的对角线上是一对垂直的。矩形中的矩形也被Apache Spark层分配给不同的机器。PolygonRDD。所有随机多边形对象都是由PolygonRDD进行支持的。PolygonRDD所需的格式如下:h点A(经度,纬度),点B(经度,纬度),点C,…。列的数量没有上限。Apache Spark层将PolygonRDDs划分为分布式集群。
    为空间RDDs提供内置操作。一旦空间RDD被初始化,这个空间RDD的内置操作就可以被用户使用。通过调用定义良好的API,用户可以有效地执行空间数据存储空间数据的复杂操作,并细节与这些功能有关的实现。从实现的角度来看,这些操作与Apache Spark层通过Map、Sort、菲尔、Reduce等进行交互。在这个透明的过程中,用户只关注空间分析编程的细节,而不用了解底层流程。提供了一组几何操作,称为几何操作库。该库支持对几何操作的原生支持,这些操作遵循开放地理空间联盟(OGC)标准。提供的几何操作的例子如下:
    1) Initialize:这个操作的功能是初始化一个空间点,矩形或多边形,它支持三个常见的几何对象,点,矩形和多边形,以及相关的操作。该操作解析输入数据并将其存储为空间对象类型。数据集应该遵循相应的空间RDDs中所需的格式。
    2) Overlap:在一个空间RDD中,这个opera的目标是找到所有在几何图形中与其他物体相交的内部物体。
    3) Inside:在一个空间RDD中,这个操作可以找到所有在几何图形中包含的内部对象。
    4) Disjoin:在一个空间的RDD中,这个操作返回所有未被分割或包含在几何图形中的对象或对象的所有对象。该操作的参数是对象或对象集的实例。
    MinimumBoundingRectangle:这个操作为空间RDD中的每个对象找到最小的边界矩形,或者返回一个包含空间RDD中所有内部对象的大的最小边界矩形。
    5) Union:在一个空间的PolygonRDD中,这个操作可以返回这个RDD中所有多边形的联合多边形。
  • SRDD分区
    通过创建一个用于数据分区的全局网格文件,自动分区所有装载的空间RDDs。将空间RDD中的每个元素分配到相同的二维空间网格空间的主要思想是:首先,将空间空间分割成若干个相等的地理大小的网格单元,构成一个全局网格文件。然后遍历SRDD中的每个元素,并将该元素分配到一个网格单元中,如果元素与此网格单元重叠。在文件大小或数据分区中,全局网格的成本较低。另一方面,全局网格文件的构造是一个迭代的工作,需要在相同的数据集上进行多个坐标排序。为了对输入数据集进行分区,为所有空间RDDs执行以下步骤:
    (1)从数据源加载原始数据集,转换原始数据集以提取空间信息并将它们存储在常规的RDD中。与此同时,将RDD缓存到内存中,用于下一个迭代作业。
top Created with Sketch.