您好,登錄后才能下訂單哦!
Apache Spark SQL入門及實踐的實例分析,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
Apache SparkSQL是一個重要的Spark模塊,我們可以使用Python、Java和Scala中的DataFrame和DataSet簡化結構化數據處理流程,該過程從企業收集數據并形成分布式數據集合。使用Spark SQL,我們可以從Spark程序內部通過標準數據庫連接器(JDBC/ODBC)連接到Spark SQL外部工具查詢數據。
下面介紹了Spark SQL體系結構組件,比如DataSets和DataFrames;在Apache Spark中使用Spark SQL以及其優劣等內容。
Apache Spark SQL教程
Spark SQL簡介
Apache SparkSQL是Spark中結構化數據處理模塊。使用Spark SQL提供的接口,我們可以獲得有關數據結構和執行計算等信息。有了這些信息,我們就可以在Apache Spark中實現優化,通過DataFrame和Dataset API等方式與Spark SQL交互。無論使用哪種API或語言表達計算,在計算結果時都使用相同的執行引擎。因此,用戶可以容易地在不同API間切換。
在Apache Spark SQL中,我們可以通過四種方式使用結構化和半結構化數據:
為了簡化結構化數據使用,它提供了Python,Java和Scala中的DataFrame抽象,提供了很好的優化技術。
可讀取和寫入多種格式數據,比如JSON、Hive Tables和Parquet。
使用SQL,我們可以從Spark程序內外部工具中查詢數據,外部工具通過標準數據庫連接器(JDBC/ODBC)連接到Spark SQL。
使用Spark SQL的最佳方法是在Spark應用程序中,這使我們能夠加載數據并使用SQL進行查詢。同時,我們還可以將它與Python、Java或Scala中的“常規”程序代碼結合使用。
SQL從其他編程語言運行的結果將是數據集或數據框架,與SQL接口的交互使用命令行或JDBC/ODBC進行。
Spark SQL DataFrames
RDD存在一些局限性,使用結構化數據沒有內置的優化引擎,開發人員必須優化每個RDD。此外,沒有規定處理結構化數據。Spark SQL中的DataFrame克服了RDD限制。Spark DataFrame是Spark 1.3版本,它是按命名列排序的分布式數據集。從概念來看,它等同于關系數據庫中的表或R/Python中的數據框架,我們可以使用以下方法創建DataFrame:
結構化數據文件
Hive中的表格
外部數據庫
使用現有的RDD
Spark SQL數據集
Spark Dataset是Spark 1.6版本中添加的接口,它是一個分布式數據集合。我們可以用JVM對象創建數據集,之后使用功能轉換(映射,過濾器等)對其進行操作,使用Scla和Java訪問數據集API。Python不支持Dataset API,但由于Python的動態特性,可以使用Dataset API的許多好處,R也如此。
Spark Catalyst Optimizer
Spark SQL使用的優化器是Catalyst,它優化了用Spark SQL和DataFrame DSL編寫的所有查詢。優化器幫助我們以比RDD對應方式更快的速度運行查詢,這提高了系統性能。
Spark Catalyst是一個基于規則的系統構建庫,每條規則都側重于具體優化。例如,ConstantFolding的重點是從查詢中消除常量表達式。
Apache Spark SQL的使用
執行SQL查詢;
我們可以使用SparkSQL從existingHive安裝中讀取數據;
當我們在另一種編程語言中運行SQL時,我們將得到結果作為數據集/數據框架。
由Spark SQL定義的函數
內置功能:提供內置函數處理列值,可以使用以下命令訪問內置函數:
Import org.apache.spark.sql.functions
用戶定義函數(UDF):UDF允許根據Scala規則創建用戶定義函數。
聚合函數:它們對一組行進行操作,并計算每組的返回值。
窗口化聚合(Windows):對一組行進行操作,并為組中的每一行計算返回值。
Spark SQL的優點
在本節中,我們將討論Apache Spark SQL的各種優點:
1、集成
Apache Spark SQL將SQL查詢與Spark程序集成。在Spark SQL的幫助下,我們可以將結構化數據作為分布式數據集(RDD)查詢,可以使用Spark SQL緊密集成屬性與復雜的分析算法一起運行SQL查詢。
2、統一數據訪問
使用Spark SQL,我們可以加載和查詢不同來源數據。Schema-RDD允許單個接口高效處理結構化數據。例如,Apache Hive tables, parquet files, and JSON files.
3、高兼容性
在Apache Spark SQL中,我們可以在現有倉庫上運行未修改的Hive查詢,允許使用Hive前端和MetaStore完全兼容現有Hive數據,查詢和UDF。
4、標準連接
可通過JDBC或ODBC連接,包括具有行業標準JDBC和ODBC連接的服務器模式。
5、可擴展性
為了支持查詢容錯和大型作業,它利用了RDD模型,使用相同的引擎進行交互式查詢。
6、性能優化
Spark SQL中的查詢優化引擎在整個計劃中選擇最佳的執行計劃。
7、用于批處理Hive表
使用Spark SQL快速批處理Hive表。
Spark SQL的缺點
除了這些功能外,Spark SQL還有一些缺點:
不支持Union類型;
無法創建或讀取包含union字段的表;
插入超大Varchar類型不提示錯誤,即使插入值超出大小限制,也不會發生錯誤。如果從Hive讀取,則相同的數據將截斷,但如果從Spark讀取則不會截斷。SparkSQL會將varchar視為字符串,這意味著沒有大小限制;
不支持Transactional 表;
Spark SQL不支持Hive事務;
不支持char類型:無法閱讀或創建包含此類字段的表格;
Avro表不支持時間戳
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。