📅  最后修改于: 2020-11-29 08:01:01             🧑  作者: Mango
Spark引入了用于结构化数据处理的编程模块,称为Spark SQL。它提供了一个称为DataFrame的编程抽象,并且可以充当分布式SQL查询引擎。
以下是Spark SQL的功能-
集成-将SQL查询与Spark程序无缝混合。使用Spark SQL,您可以在Spark中以分布式数据集(RDD)的形式查询结构化数据,并使用Python,Scala和Java中的集成API。这种紧密的集成使与复杂的分析算法一起运行SQL查询变得容易。
统一数据访问-从各种来源加载和查询数据。 Schema-RDD提供了一个单一接口,可有效使用结构化数据,包括Apache Hive表,镶木地板文件和JSON文件。
Hive兼容性-在现有仓库上运行未修改的Hive查询。 Spark SQL重用了Hive前端和MetaStore,使您与现有的Hive数据,查询和UDF完全兼容。只需将其与Hive一起安装即可。
标准连接-通过JDBC或ODBC连接。 Spark SQL包括具有行业标准JDBC和ODBC连接的服务器模式。
可伸缩性-对交互式查询和长查询使用相同的引擎。 Spark SQL利用RDD模型来支持中间查询的容错能力,从而使其也可以扩展到大型作业。不必担心为历史数据使用其他引擎。
下图说明了Spark SQL的体系结构-
该体系结构包含三层,即语言API,模式RDD和数据源。
语言API -Spark与其他语言和Spark SQL兼容。这些语言API(Python,scala,java,HiveQL)也支持它。
模式RDD -Spark Core设计有称为RDD的特殊数据结构。通常,Spark SQL适用于架构,表和记录。因此,我们可以将Schema RDD用作临时表。我们可以将此模式RDD称为数据帧。
数据源-通常,spark-core的数据源是文本文件,Avro文件等。但是,Spark SQL的数据源是不同的。这些是Parquet文件,JSON文档,HIVE表和Cassandra数据库。
在后面的章节中,我们将讨论更多这些内容。