日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

2021年大数据Spark(二十三):SparkSQL 概述

發布時間:2023/11/28 生活经验 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2021年大数据Spark(二十三):SparkSQL 概述 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

SparkSQL 概述

前世今生

Shark 框架-淘汰了

SparkSQL?模塊

Hive 與 SparkSQL

官方定義

?第一、針對結構化數據處理,屬于Spark框架一個部分

?第二、抽象數據結構:DataFrame

?第三、分布式SQL引擎,類似Hive框架

SparkSQL 特性

?第一、易整合

?第二、統一的數據訪問

?第三、兼容Hive

?第四、標準的數據連接


?

SparkSQL 概述

Spark SQL允許開發人員直接處理RDD,同時可以查詢在Hive上存儲的外部數據。Spark SQL的一個重要特點就是能夠統一處理關系表和RDD,使得開發人員可以輕松的使用SQL命令進行外部查詢,同時進行更加復雜的數據分析。

前世今生

?????SparkSQL模塊一直到Spark 2.0版本才算真正穩定,發揮其巨大功能,發展經歷如下幾個階段。

?

?

Shark 框架-淘汰了

首先回顧SQL On Hadoopp框架:Hive(可以說Hive時大數據生態系統中第一個SQL框架),架構如下所示:

?

可以發現Hive框架底層就是MapReduce,所以在Hive中執行SQL時,往往很慢很慢。

?

Spark出現以后,將HiveQL語句翻譯成基于RDD操作,此時Shark框架誕生了。

?

Spark SQL的前身是Shark,它發布時Hive可以說是SQL on Hadoop的唯一選擇(Hive負責將SQL編譯成可擴展的MapReduce作業),鑒于Hive的性能以及與Spark的兼容,Shark由此而生。Shark即Hive on Spark,本質上是通過Hive的HQL進行解析,把HQL翻譯成Spark上對應的RDD操作,然后通過Hive的Metadata獲取數據庫里表的信息,實際為HDFS上的數據和文件,最后有Shark獲取并放到Spark上計算。

但是Shark框架更多是對Hive的改造,替換了Hive的物理執行引擎,使之有一個較快的處理速度。然而不容忽視的是Shark繼承了大量的Hive代碼,因此給優化和維護帶來大量的麻煩。為了更好的發展,Databricks在2014年7月1日Spark Summit上宣布終止對Shark的開發,將重點放到SparkSQL模塊上。

文檔:https://databricks.com/blog/2014/07/01/shark-spark-sql-hive-on-spark-and-the-future-of-sql-on-spark.html

?

SparkSQL模塊主要將以前依賴Hive框架代碼實現的功能自己實現,稱為Catalyst引擎

Catalyst: SQL翻譯器

?

SparkSQL?模塊

?????從Spark框架1.0開始發布SparkSQL模塊開發,直到1.3版本發布SparkSQL Release版本可以在生產環境使用,此時數據結構為DataFrame = RDD + Schame

?1)、解決的問題

Spark SQL 執行計劃和優化交給優化器 Catalyst;

內建了一套簡單的SQL解析器,可以不使用HQL;

還引入和 DataFrame 這樣的DSL API,完全可以不依賴任何 Hive 的組件;

?2)、新的問題

對于初期版本的SparkSQL,依然有挺多問題,例如只能支持SQL的使用,不能很好的兼容命令式,入口不夠統一等;

SparkSQL 在 1.6 時代,增加了一個新的API叫做 Dataset,Dataset 統一和結合了 SQL 的訪問和命令式 API 的使用,這是一個劃時代的進步。在 Dataset 中可以輕易的做到使用 SQL 查詢并且篩選數據,然后使用命令式 API 進行探索式分析

Spark 2.x發布時,將Dataset和DataFrame統一為一套API,以Dataset數據結構為主(Dataset = RDD + Schema),其中DataFrame = Dataset[Row]

?

?

???????Hive 與 SparkSQL

從SparkSQL模塊前世今生可以發現,從Hive框架衍生逐漸發展而來,Hive框架提供功能SparkSQL幾乎全部都有,并且SparkSQL完全兼容Hive,從其加載數據進行處理。

?

Hive是將SQL轉為MapReduce,SparkSQL可以理解成是將SQL解析成RDD + 優化再執行。

?

???????官方定義

SparkSQL模塊官方定義:針對結構化數據處理Spark Module模塊。

?

主要包含三層含義:

?

?第一、針對結構化數據處理,屬于Spark框架一個部分

結構化數據:一般指數據有固定的 Schema(約束),例如在用戶表中,name 字段是 String 型,那么每一條數據的 name 字段值都可以當作 String 來使用;

半結構化數據

?

[{"name": "jack","tel": "1388888888",},{"name": "jack","tel": "1388888888","age":18},{"name": "jack","tel": "1388888888","age": "18"}]

?

?

schema信息,包含字段的名稱和字段的類型

?

?第二、抽象數據結構:DataFrame

將要處理的結構化數據封裝在DataFrame中,來源Python數據分析庫Pandas和R語言dataframe;

DataFrame = RDD + Schema信息;

?

?第三、分布式SQL引擎,類似Hive框架

從Hive框架繼承而來,Hive中提供bin/hive交互式SQL命令行及HiveServer2服務,SparkSQL都可以;

Spark SQL模塊架構示意圖如下:

?

???????SparkSQL 特性

Spark SQL是Spark用來處理結構化數據的一個模塊,主要四個特性:

?

?第一、易整合

可以使用Java、Scala、Python、R等語言的API操作。

?

?第二、統一的數據訪問

?

????連接到任何數據源的方式相同。

?

?第三、兼容Hive

????支持Hive HQL的語法,兼容hive(元數據庫、SQL語法、UDF、序列化、反序列化機制)。

?

?第四、標準的數據連接

可以使用行業標準的JDBC或ODBC連接。

?

SparkSQL模塊官方文檔:http://spark.apache.org/docs/2.4.5/sql-programming-guide.html

總結

以上是生活随笔為你收集整理的2021年大数据Spark(二十三):SparkSQL 概述的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。