SparkSQL 概述

mcxiaoracle發表於2022-09-12

Spark  SQL是Spark用於結構化資料(structured data)處理的Spark模組。

二、Hive and SparkSQL

 SparkSQL的前身是Shark,給熟悉RDBMS但又不理解 MapReduce 的技術人員提供快速上手的工具。

 Hive是早期唯一執行在 Hadoop 上的SQL-on-Hadoop工具。 但是MapReduce計算過程中大量的中間磁碟落地過程消耗了大量的I/O,降低的執行效率,為了提高SQL-on-Hadoop的效率,大量的SQL-on-Hadoop工具開始產生,其中表現較為突出的是:

SQL-on-Hadoop工具開始產生,其中表現較為突出的是:


  • Drill
  • Impala
  • Shark

其中Shark是伯克利實驗室Spark生態環境的元件之一,是基於Hive所開發的工具,它修改了下圖所示的右下角的記憶體管理、物理計劃、執行三個模組,並使之能執行在Spark引擎上。

SparkSQL拋棄原有Shark的程式碼,汲取了Shark的一些優點,如記憶體列儲存(In-Memory Columnar Storage)、Hive相容性等,重新開發了SparkSQL程式碼;由於擺脫了對Hive的依賴性,SparkSQL無論在資料相容、效能最佳化、元件擴充套件方面都得到了極大的方便,真可謂“退一步,海闊天空”。


  • 資料相容方面 SparkSQL不但相容Hive,還可以從RDD、parquet檔案、JSON檔案中獲取資料,未來版本甚至支援獲取RDBMS資料以及cassandra等NOSQL資料;


  • 效能最佳化方面 除了採取In-Memory Columnar Storage、byte-code generation等最佳化技術外、將會引進Cost Model對查詢進行動態評估、獲取最佳物理計劃等等;

元件擴充套件方面 無論是SQL的語法解析器、分析器還是最佳化器都可以重新定義,進行擴充套件。


三.SparkSQL 優點:

無縫的整合了 SQL 查詢和 Spark 程式設計

3.2 統一的資料訪問

3.3 相容Hive

3.4 標準資料連線



五。

———

DataSet是什麼

DataSet是分散式資料集合。DataSet是Spark 1.6中新增的一個新抽象,是DataFrame的一個擴充套件。它提供了RDD的優勢(強型別,使用強大的lambda函式的能力)以及Spark SQL最佳化執行引擎的優點。

DataSet也可以使用功能性的轉換(操作map,flatMap,filter等等)。


  • DataSet是DataFrame API的一個擴充套件,是SparkSQL最新的資料抽象
  • 使用者友好的API風格,既具有型別安全檢查也具有DataFrame的查詢最佳化特性;

  • 樣例類來對DataSet中定義資料的結構資訊,樣例類中每個屬性的名稱直接對映到DataSet中的欄位名稱;
  • DataSet是 強型別的。比如可以有DataSet[Car],DataSet[Person]。

DataFrame是DataSet的特列,DataFrame=DataSet[Row],所以可以透過as方法將DataFrame轉換為DataSet。Row是一個型別,跟Car、Person這些的型別一樣,所有的表結構資訊都用Row來表示。獲取資料時需要指定順序



https://blog.csdn.net/mengxianglong123/article/details/121392689


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69949806/viewspace-2914331/,如需轉載,請註明出處,否則將追究法律責任。

相關文章