什么是SparkSQL?為什么要學(xué)習(xí)SparkSQL?
1 什么是SparkSQL

SparkSQL 是Spark的一個(gè)模塊,?用于處理海量結(jié)構(gòu)化數(shù)據(jù)
限定: 結(jié)構(gòu)化數(shù)據(jù)處理

第一、針對(duì)結(jié)構(gòu)化數(shù)據(jù)處理,屬于Spark框架一個(gè)部分

schema信息,包含字段的名稱(chēng)和字段的類(lèi)型,比如:JSON、XML、CSV、TSV、MySQL Table、ORC、Parquet,ES、MongoDB等都是結(jié)構(gòu)化數(shù)據(jù);
第二、抽象數(shù)據(jù)結(jié)構(gòu):DataFrame
DataFrame = RDD + Schema信息;
第三、分布式SQL引擎,類(lèi)似Hive框架
從Hive框架繼承而來(lái),Hive中提供bin/hive交互式SQL命令行及HiveServer2服務(wù),SparkSQL都可以;
Spark SQL模塊架構(gòu)示意圖如下

備注:Catalog就是Spark 2.0之后提供的訪問(wèn)元數(shù)據(jù)的類(lèi):Catalog提供一些API用來(lái)對(duì)數(shù)據(jù)庫(kù)、表、視圖、緩存、列、函數(shù)(UDF/UDAF)進(jìn)行操作
2 為什么學(xué)習(xí)SparkSQL

由于MapReduce這種計(jì)算模型執(zhí)行效率比較慢,rdd原生代碼較為復(fù)雜,所以Spark SQL應(yīng)運(yùn)而生,它是將Spark SQL轉(zhuǎn)換成RDD,然后提交到集群中去運(yùn)行,執(zhí)行效率非???!(查看官網(wǎng)學(xué)習(xí))
SparkSQL是非常成熟的 海量結(jié)構(gòu)化數(shù)據(jù)處理框架.
學(xué)習(xí)SparkSQL主要在2個(gè)點(diǎn):
1. SparkSQL本身十分優(yōu)秀, 支持SQL語(yǔ)言\性能強(qiáng)\可以自動(dòng)優(yōu)化\API簡(jiǎn)單\兼容HIVE等等
2. 企業(yè)大面積在使用SparkSQL處理業(yè)務(wù)數(shù)據(jù)
·?離線開(kāi)發(fā)
·?數(shù)倉(cāng)搭建
·?科學(xué)計(jì)算、數(shù)據(jù)分析
3 SparkSQL的特點(diǎn)
融合性
SQL可以無(wú)縫集成在代碼中, 隨時(shí)用SQL處理數(shù)據(jù)

統(tǒng)一數(shù)據(jù)訪問(wèn)
一套標(biāo)準(zhǔn)API可讀寫(xiě)不同數(shù)據(jù)源

Hive兼容
可以使用SparkSQL直接計(jì)算并生成Hive數(shù)據(jù)表
標(biāo)準(zhǔn)化連接
支持標(biāo)準(zhǔn)化JDBC\ODBC連接, 方便和各種數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)交互.
SparkSQL模塊官方文檔:
http://spark.apache.org/docs/3.1.2/sql-programming-guide.html
