Spark為結(jié)構(gòu)化數(shù)據(jù)處理引入了一個稱為Spark SQL的編程模塊。它提供了一個稱為DataFrame的編程抽象,并且可以充當(dāng)分布式SQL查詢引擎。
以下是Spark SQL的功能
集成
無縫地將SQL查詢與Spark程序混合。 Spark SQL允許您將結(jié)構(gòu)化數(shù)據(jù)作為Spark中的分布式數(shù)據(jù)集(RDD)進行查詢,在Python,Scala和Java中集成了API。這種緊密的集成使得可以輕松地運行SQL查詢以及復(fù)雜的分析算法。
統(tǒng)一數(shù)據(jù)訪問
加載和查詢來自各種來源的數(shù)據(jù)。 Schema-RDDs提供了一個有效處理結(jié)構(gòu)化數(shù)據(jù)的單一接口,包括Apache Hive表,鑲木地板文件和JSON文件。
Hive兼容性
在現(xiàn)有倉庫上運行未修改的Hive查詢。 Spark SQL重用了Hive前端和MetaStore,為您提供與現(xiàn)有Hive數(shù)據(jù),查詢和UDF的完全兼容性。只需將其與Hive一起安裝即可。
標(biāo)準(zhǔn)連接
通過JDBC或ODBC連接。 Spark SQL包括具有行業(yè)標(biāo)準(zhǔn)JDBC和ODBC連接的服務(wù)器模式。
可擴展性
對于交互式查詢和長查詢使用相同的引擎。 Spark SQL利用RDD模型來支持中查詢?nèi)蒎e,使其能夠擴展到大型作業(yè)。不要擔(dān)心為歷史數(shù)據(jù)使用不同的引擎。
下圖說明了Spark SQL的體系結(jié)構(gòu)
此架構(gòu)包含三個層,即Language API,Schema RDD和數(shù)據(jù)源。
語言API
Spark與不同的語言和Spark SQL兼容。 它也是由這些語言支持的API(python,scala,java,HiveQL)。
模式RDD
Spark Core是使用稱為RDD的特殊數(shù)據(jù)結(jié)構(gòu)設(shè)計的。 通常,Spark SQL適用于模式,表和記錄。 因此,我們可以使用Schema RDD作為臨時表。 我們可以將此Schema RDD稱為數(shù)據(jù)幀。
數(shù)據(jù)源
通常spark-core的數(shù)據(jù)源是文本文件,Avro文件等。但是,Spark SQL的數(shù)據(jù)源不同。 這些是Parquet文件,JSON文檔,HIVE表和Cassandra數(shù)據(jù)庫。
我們將在隨后的章節(jié)中更多地討論這些。
更多建議: