数据查询工具支持对数据的过滤,包括属性过滤和空间关系过滤;也支持对数据执行复杂统计分析,例如:通过Count、Sum等聚合函数对数据进行统计;通过st_area等地理空间操作函数计算空间对象的面积等。
数据查询相关工具各有各的特点,下面分类进行介绍,您可以根据数据查询需求,选择合适的工具。
-
ECQL查询:
相关工具:
- 要素数据集ECQL查询
- 数据库ECQL过滤读取
ECQL是为了解决CQL的局限性而出现的一个CQL的扩展版本,ECQL消除了CQL的限制,更加灵活,且与SQL有很强的相似性;ECQL查询语言能够屏蔽数据库方言,这是优于SQL语言之处,但是ECQL只支持过滤,不能像SQL那样支持复杂统计分析能力,且ECQL支持的空间函数数量少,约十几个。
此外,数据库ECQL查询工具是直接在数据库(目前仅支持访问PostGIS和Oracle Spatial数据库)中查询,因此,可以借助数据库索引,获得较高的查询性能。ECQL查询工具常用于从全量数据过滤读取出部分数据参与后续的运算。
-
Spark SQL查询:
相关工具:
- SQL查询
- 数据集SQL查询
Spark SQL是Spark框架中提供SQL查询能力的模块,能够让不熟悉编程语言的人使用简单的SQL语句就能对分布式数据进行查询和分析。Spark SQL引入了结构化数据存储方式DataFrame,使我们能使用SQL语句进行分布式数据的读取和计算,DataFrame的底层仍然是RDD,因此,Spark SQL最终是在Spark中执行,完全在内存中完成计算,而与数据库无关,同时,这也省去了中间结果的存储,可以提供更加便捷的数据处理能力,适合在复杂在业务流程中使用。
Spark SQL相关的数据查询工具基于内部的FeatureRDD和DataFrame的互转能力,可以支持对传入的DataFrame和FeatureRDD两种数据类型执行Spark SQL查询。
关于Spark SQL查询能力方面,不仅可以使用Spark SQL原生的查询能力,而且可以使用SuperMap扩展的空间数据操作能力(扩展是基于 Spark SQL 的用户自定义函数。(User-defined Function, UDF),提供一系列满足OGC标准的 OpenGIS Simple Feature访问-SQL规范的地理空间数据操作UDF函数,这些函数以st_开头。)
总结一下,数据查询各类工具的特征:
- SparkSQL查询工具,都是对FeatureRDD和DataFrame两种内存数据执行查询,而要素数据集ECQL查询工具是基于FeatureRDD内存数据执行查询,因此,这两种查询均与数据库无关。
- ECQL查询工具,直接对数据库查询,可以借助数据库索引实现高效数据查询,但支持的数据库有限,仅支持PostGIS和Oracle Spatial数据库。
- 查询能力方面,ECQL查询只支持对数据过滤,无法完成更复杂的统计分析,而SparkSQL查询可以完成复杂统计分析,对数据的操作更加灵活。