SparkSQL 結構化數據處理流程及原理是什么?Spark SQL 可以使用現有的Hive元存儲、SerDes 和 UDF。它可以使用 JDBC/ODBC 連接到現有的 BI 工具。有了 Spark SQL,用戶可以編寫 SQL 風格的查詢。
Spark SQL 是 Spark 生態(tài)系統(tǒng)中處理結構化格式數據的模塊。它在內部使用 Spark Core API 進行處理,但對用戶的使用進行了抽象。這篇文章深入淺出地告訴你 Spark SQL 3.x 的新內容。
這對于精通結構化查詢語言或 SQL 的廣大用戶群體來說,基本上是很有幫助的。用戶也將能夠在結構化數據上編寫交互式和臨時性的查詢。Spark SQL 彌補了彈性分布式數據集RDD和關系表之間的差距。RDD 是 Spark 的基本數據結構。它將數據作為分布式對象存儲在適合并行處理的節(jié)點集群中。RDD 很適合底層處理,但在運行時很難調試,程序員不能自動推斷模式schema。另外,RDD 沒有內置的優(yōu)化功能。Spark SQL 提供了數據幀DataFrame和數據集來解決這些問題。
Spark SQL 可以使用現有的 Hive 元存儲、SerDes 和 UDF。它可以使用 JDBC/ODBC 連接到現有的 BI 工具。
數據源
大數據處理通常需要處理不同的文件類型和數據源(關系型和非關系型)的能力。Spark SQL 支持一個統(tǒng)一的數據幀接口來處理不同類型的源,如下所示。
文件:
CSV
Text
JSON
XML
JDBC/ODBC:
MySQL
Oracle
Postgres
帶模式的文件:
AVRO
Parquet
Hive 表:
Spark SQL 也支持讀寫存儲在 Apache Hive 中的數據。
通過數據幀,用戶可以無縫地讀取這些多樣化的數據源,并對其進行轉換/連接。
Spark SQL 3.x 的新內容
在以前的版本中(Spark 2.x),查詢計劃是基于啟發(fā)式規(guī)則和成本估算的。從解析到邏輯和物理查詢計劃,最后到優(yōu)化的過程是連續(xù)的。這些版本對轉換和行動的運行時特性幾乎沒有可見性。因此,由于以下原因,查詢計劃是次優(yōu)的:
1、缺失和過時的統(tǒng)計數據
2、次優(yōu)的啟發(fā)式方法
3、錯誤的成本估計
Spark 3.x 通過使用運行時數據來迭代改進查詢計劃和優(yōu)化,增強了這個過程。前一階段的運行時統(tǒng)計數據被用來優(yōu)化后續(xù)階段的查詢計劃。這里有一個反饋回路,有助于重新規(guī)劃和重新優(yōu)化執(zhí)行計劃。
自適應查詢執(zhí)行(AQE)
查詢被改變?yōu)檫壿嬘媱?,最后變成物理計劃。這里的概念是“重新優(yōu)化”。它利用前一階段的可用數據,為后續(xù)階段重新優(yōu)化。正因為如此,整個查詢的執(zhí)行要快得多。
動態(tài)合并“洗牌”分區(qū)
Spark 在“洗牌shuffle”操作后確定最佳的分區(qū)數量。在 AQE 中,Spark 使用默認的分區(qū)數,即 200 個。這可以通過配置來啟用。
動態(tài)切換連接策略
廣播哈希是最好的連接操作。如果其中一個數據集很小,Spark 可以動態(tài)地切換到廣播連接,而不是在網絡上“洗牌”大量的數據。
動態(tài)優(yōu)化傾斜連接
如果數據分布不均勻,數據會出現傾斜,會有一些大的分區(qū)。這些分區(qū)占用了大量的時間。Spark 3.x 通過將大分區(qū)分割成多個小分區(qū)來進行優(yōu)化。
其他改進措施
此外,Spark SQL 3.x還支持以下內容。
動態(tài)分區(qū)修剪
3.x 將只讀取基于其中一個表的值的相關分區(qū)。這消除了解析大表的需要。
連接提示
如果用戶對數據有了解,這允許用戶指定要使用的連接策略。這增強了查詢的執(zhí)行過程。
兼容 ANSI SQL
在兼容 Hive 的早期版本的 Spark 中,我們可以在查詢中使用某些關鍵詞,這樣做是完全可行的。然而,這在 Spark SQL 3 中是不允許的,因為它有完整的 ANSI SQL 支持。例如,“將字符串轉換為整數”會在運行時產生異常。它還支持保留關鍵字。
較新的 Hadoop、Java 和 Scala 版本
從 Spark 3.0 開始,支持 Java 11 和 Scala 2.12。 Java 11 具有更好的原生協(xié)調和垃圾校正,從而帶來更好的性能。 Scala 2.12 利用了 Java 8 的新特性,優(yōu)于 2.11。
Spark 3.x 提供了這些現成的有用功能,而無需開發(fā)人員操心。這將顯著提高 Spark 的整體性能。
更多關于大數據培訓的問題,歡迎咨詢千鋒教育在線名師。千鋒教育擁有多年IT培訓服務經驗,采用全程面授高品質、高體驗培養(yǎng)模式,擁有國內一體化教學管理及學員服務,助力更多學員實現高薪夢想。