Spark SQL簡介

Spark為結構化數據處理引入了一個稱為Spark SQL的編程模塊。它提供了一個稱為DataFrame的編程抽象,並且可以充當分佈式SQL查詢引擎。

Spark SQL的特性

以下是Spark SQL的功能

集成

無縫地將SQL查詢與Spark程序混合。 Spark SQL允許您將結構化數據作為Spark中的分佈式數據集(RDD)進行查詢,在Python,Scala和Java中集成了API。這種緊密的集成使得可以輕鬆地運行SQL查詢以及複雜的分析算法。

統一數據訪問

加載和查詢來自各種來源的數據。 Schema-RDDs提供了一個有效處理結構化數據的單一接口,包括Apache Hive表,鑲木地板文件和JSON文件。

Hive兼容性

在現有倉庫上運行未修改的Hive查詢。 Spark SQL重用了Hive前端和MetaStore,為您提供與現有Hive數據,查詢和UDF的完全兼容性。只需將其與Hive一起安裝即可。

標準連接

通過JDBC或ODBC連接。 Spark SQL包括具有行業標準JDBC和ODBC連接的服務器模式。

可擴展性

對於交互式查詢和長查詢使用相同的引擎。 Spark SQL利用RDD模型來支持中查詢容錯,使其能夠擴展到大型作業。不要擔心為歷史數據使用不同的引擎。

Spark SQL架構

下圖說明了Spark SQL的體系結構

此架構包含三個層,即Language API,Schema RDD和數據源。

語言API

Spark與不同的語言和Spark SQL兼容。 它也是由這些語言支持的API(python,scala,java,HiveQL)。

模式RDD

Spark Core是使用稱為RDD的特殊數據結構設計的。 通常,Spark SQL適用於模式,表和記錄。 因此,我們可以使用Schema RDD作為臨時表。 我們可以將此Schema RDD稱為數據幀。

數據源

通常spark-core的數據源是文本文件,Avro文件等。但是,Spark SQL的數據源不同。 這些是Parquet文件,JSON文檔,HIVE表和Cassandra數據庫。

我們將在隨後的章節中更多地討論這些。