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