2021年大数据Spark(二十六):SparkSQL数据处理分析
目錄
SparkSQL數據處理分析
基于DSL分析
基于SQL分析
第一步、注冊為臨時視圖
第二步、編寫SQL,執行分析
???????SparkSQL數據處理分析
?????在SparkSQL模塊中,將結構化數據封裝到DataFrame或Dataset集合中后,提供兩種方式分析處理數據,正如前面案例【詞頻統計WordCount】兩種方式:
?第一種:DSL(domain-specific language)編程,調用DataFrame/Dataset API(函數),類似RDD中函數;
?第二種:SQL 編程,將DataFrame/Dataset注冊為臨時視圖或表,編寫SQL語句,類似HiveQL;
?????兩種方式底層轉換為RDD操作,包括性能優化完全一致,在實際項目中語句不通的習慣及業務靈活選擇。比如機器學習相關特征數據處理,習慣使用DSL編程;比如數據倉庫中數據ETL和報表分析,習慣使用SQL編程。無論哪種方式,都是相通的,必須靈活使用掌握。
?
?
?
基于DSL分析
調用DataFrame/Dataset中API(函數)分析數據,其中函數包含RDD中轉換函數和類似SQL語句函數,部分截圖如下:
?
類似SQL語法函數:調用Dataset中API進行數據分析,Dataset中涵蓋很多函數,大致分類如下:
?1、選擇函數select:選取某些列的值
?
?
?2、過濾函數filter/where:設置過濾條件,類似SQL中WHERE語句
?
?
?3、分組函數groupBy/rollup/cube:對某些字段分組,在進行聚合統計
?
?
?4、聚合函數agg:通常與分組函數連用,使用一些count、max、sum等聚合函數操作
?
?
?5、排序函數sort/orderBy:按照某寫列的值進行排序(升序ASC或者降序DESC)
?
?
?6、限制函數limit:獲取前幾條數據,類似RDD中take函數
?
?
?7、重命名函數withColumnRenamed:將某列的名稱重新命名
?
?
?8、刪除函數drop:刪除某些列
?
?
?9、增加列函數withColumn:當某列存在時替換值,不存在時添加此列
?
?
上述函數在實際項目中經常使用,尤其數據分析處理的時候,其中要注意,調用函數時,通常指定某個列名稱,傳遞Column對象,通過隱式轉換轉換字符串String類型為Column對象。
?
Dataset/DataFrame中轉換函數,類似RDD中Transformation函數,使用差不多:
?
?
???????基于SQL分析
將Dataset/DataFrame注冊為臨時視圖,編寫SQL執行分析,分為兩個步驟:
第一步、注冊為臨時視圖
?
?
第二步、編寫SQL,執行分析
?
?
其中SQL語句類似Hive中SQL語句,查看Hive官方文檔,SQL查詢分析語句語法,官方文檔文檔:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Select
?
總結
以上是生活随笔為你收集整理的2021年大数据Spark(二十六):SparkSQL数据处理分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021年大数据Spark(二十五):S
- 下一篇: 2021年大数据Spark(二十七):S