大數(shù)據(jù)分析及應用項目教程(Spark SQL)(微課版) 課件 許慧 第5、6章 電商大數(shù)據(jù)分析與探索、Zepplin數(shù)據(jù)可視化_第1頁
大數(shù)據(jù)分析及應用項目教程(Spark SQL)(微課版) 課件 許慧 第5、6章 電商大數(shù)據(jù)分析與探索、Zepplin數(shù)據(jù)可視化_第2頁
大數(shù)據(jù)分析及應用項目教程(Spark SQL)(微課版) 課件 許慧 第5、6章 電商大數(shù)據(jù)分析與探索、Zepplin數(shù)據(jù)可視化_第3頁
大數(shù)據(jù)分析及應用項目教程(Spark SQL)(微課版) 課件 許慧 第5、6章 電商大數(shù)據(jù)分析與探索、Zepplin數(shù)據(jù)可視化_第4頁
大數(shù)據(jù)分析及應用項目教程(Spark SQL)(微課版) 課件 許慧 第5、6章 電商大數(shù)據(jù)分析與探索、Zepplin數(shù)據(jù)可視化_第5頁
已閱讀5頁,還剩84頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第5章電商大數(shù)據(jù)分析與探索女裝電子商務評論情況分析第一部分數(shù)據(jù)準備數(shù)據(jù)轉換數(shù)據(jù)分析數(shù)據(jù)輸出數(shù)據(jù)清洗情境導入

網購已經成為人們生活中不可或缺的一件事情,如何經營好一家線上商店是很多商家關注的問題。對于線上商店,客戶對商品的評論情況對商品的銷量、商店的經營發(fā)展起到了重要的作用?,F(xiàn)有某女裝線上商店的一份圍繞客戶評論的女裝電子商務數(shù)據(jù)集Clothing-Reviews.csv。現(xiàn)在商家希望能幫助他們對此份數(shù)據(jù)進行分析,獲得一些建設性意見,幫助商店更好的發(fā)展。字段含義order_id訂單編號clothing_id服裝編號age年齡review_text 評論rating評級recommended_IND是否推薦positive_feedback_count積極反饋計數(shù)class_name服裝分類學習目標和要求1、掌握從不同數(shù)據(jù)源創(chuàng)建DataFrames的方法。2、掌握操作DataFrame進行數(shù)據(jù)清洗的基本方法。3、掌握操作DataFrame進行數(shù)據(jù)轉換的基本方法。4、掌握使用SparkSQL語句進行數(shù)據(jù)分析的方法。5、掌握持久存儲數(shù)據(jù)的方法。數(shù)據(jù)準備

在實際業(yè)務中,數(shù)據(jù)的來源多種多樣。SparkSQL在數(shù)據(jù)兼容方面,不僅可以直接處理RDD,也可以處理Parquet文件或者JSON文件,更可以處理外部數(shù)據(jù)庫中的數(shù)據(jù)。

在Spark中,DataFrame是一種以RDD為基礎的分布式數(shù)據(jù)集,類似于傳統(tǒng)數(shù)據(jù)庫中的二維表格,是SparkSQL最核心的編程抽象。DataFrame與RDD的主要區(qū)別在于,前者帶有schema元信息,即DataFrame所表示的二維表數(shù)據(jù)集的每一列都帶有名稱和類型。這使得SparkSQL得以洞察更多的結構信息,從而可以對藏于DataFrame背后的數(shù)據(jù)源以及作用于DataFrame之上的變換進行針對性的優(yōu)化,最終達到大幅提升運行效率的目標。數(shù)據(jù)準備

使用Spark庫可以將不同數(shù)據(jù)來源的數(shù)據(jù)轉換為DataFrame,并對數(shù)據(jù)結果進行展示。創(chuàng)建DataFrame的三種方法:1、使用toDF函數(shù)創(chuàng)建DataFrame(1)本地seq+toDF創(chuàng)建DataFrame。

(2)通過caseclass+toDF創(chuàng)建DataFrame數(shù)據(jù)準備2、使用createDataFrame函數(shù)創(chuàng)建DataFrame數(shù)據(jù)準備3、從外部數(shù)據(jù)創(chuàng)建DataFrame

(1)使用parquet文件創(chuàng)建valdf=sqlContext.read.parquet("/Chapter5/goods.parquet")

(2)使用json文件創(chuàng)建valdf=spark.read.json("/Chapter5/goods.json")

(3)使用CSV(Comma-SeparatedValues)文件創(chuàng)建1)讀取CSV文件,使用類型推斷創(chuàng)建DataFrame2)讀取CSV文件,自定義schema創(chuàng)建DataFrame。數(shù)據(jù)準備4、讀取“女裝電子商務評論”數(shù)據(jù)集(1)啟動Hadoop集群和Spark集群(2)將“Clothing-Reviews.csv”女裝電子商務評論數(shù)據(jù)集上傳到HDFS文件系統(tǒng)的/Chapter5/目錄下。(3)讀取CSV文件,使用自定義schema方式轉換為DataFrame。數(shù)據(jù)清洗

數(shù)據(jù)清洗是對數(shù)據(jù)進行重新審查和校驗的過程,目的在于刪除重復信息、糾正存在的錯誤,并提供數(shù)據(jù)一致性。在Clothing-Reviews.csv數(shù)據(jù)集中,存在一些重復數(shù)據(jù),也有部分缺失,需要我們對其進行數(shù)據(jù)清洗。1、drop(cols)

按照列名cols刪除DataFrame中的列,返回新的DataFrame。此方法可以刪除數(shù)據(jù)表中無用的或者不想要的數(shù)據(jù)列。刪除“publisher”列。數(shù)據(jù)清洗2、dropDuplicates(subset=None)

此方法用于刪除DataFrame中的重復行,subset用于指定刪除重復行的時候考慮哪幾列。刪除重復的行:刪除author列重復的行:數(shù)據(jù)清洗3、na.drop

此方法用于刪除DataFrame中的null空數(shù)據(jù),加入“any”和“all”參數(shù)可以指定刪除條件,加入數(shù)字參數(shù)指定有多少個空值進行刪除,加入字段名刪除指定字段中的空值。對有任意一個為缺失值的行進行刪除:對全部為缺失值的行進行刪除:對有3個缺失值的數(shù)據(jù)行進行刪除:對有兩個缺失值以上的數(shù)據(jù)行進行刪除:數(shù)據(jù)清洗4、na.fill()

此方法用于將DataFrame中所有缺失值填充為一個給定的字符串或數(shù)值??梢詾樗腥笔е抵付ㄗ址驍?shù)值,也可以為指定列指定不同字符串或數(shù)值。將表中所有的null空數(shù)據(jù)指定為“不明”:數(shù)據(jù)清洗對不同的列中缺失值填充不同的字符串:5、對“Clothing-Reviews.csv”女裝電子商務評論數(shù)據(jù)集進行數(shù)據(jù)清洗,刪除重復的數(shù)據(jù),對有空缺數(shù)據(jù)的行進行刪除。數(shù)據(jù)轉換

數(shù)據(jù)轉換是將數(shù)據(jù)從一種格式或結構轉換為另一種格式或結構的過程。數(shù)據(jù)轉換對于數(shù)據(jù)集成和數(shù)據(jù)管理等活動至關重要。數(shù)據(jù)轉換可以包括一系列活動:可以轉換數(shù)據(jù)類型,豐富數(shù)據(jù)或執(zhí)行聚合,具體取決于項目的需要。1、withColumn(colName,col)

此方法用于為數(shù)據(jù)表添加新列,返回一個新的DataFrame增加colNAme列,如果原來本身就有colName的列,就進行替換。數(shù)據(jù)轉換2、withColumnRename(existing,new)

此方法用于對已經存在的列名進行重命名。existing為原來的名字,new為新的列名,若名稱不存在則這個操作不做任何事情。3、定義UDF,將數(shù)據(jù)表中的兩列合并成一列。UDF是指用戶定義函數(shù),用于擴展系統(tǒng)的內置功能。我們可以在SparkSQL中自定義實際需要的UDF來處理數(shù)據(jù)。//創(chuàng)建一個udf來連接兩個列值valconnect=udf((name:String,author:String)=>{name+"-"+author})

//應用該udf來創(chuàng)建合并的列,并添加為新的列valconnectdf=books.withColumn("bookname-author",connect($"name",$"author"))數(shù)據(jù)轉換4、定義UDF,對表格中的列添加字符或者數(shù)字。

定義一個udf,為price列的值增加10,此處需要利用toDouble將原來字符串類型的price值轉換為double類型數(shù)值:valaddconst=udf((price:String)=>{if(price==null)0elseprice.toDouble+10})

當對表中已經存在的列的值追加新的列時,如果新列與舊列同名,則會覆蓋舊列:數(shù)據(jù)轉換5、na.replace

此方法用于對現(xiàn)有的字符或者數(shù)字刪除或替換字符或者數(shù)字。如果在replace中列名參數(shù)是“*”,那么將會對所有的列進行相應的替換。6、對“Clothing-Reviews.csv”女裝電子商務評論數(shù)據(jù)集進行數(shù)據(jù)轉換,將recommended_IND(是否推薦)列中的1替換為推薦,0替換為不推薦。數(shù)據(jù)分析

使用SQL語句對數(shù)據(jù)進行探索分析是大多數(shù)軟件開發(fā)和維護人員比較習慣的方式。SparkSQL支持直接應用標準SQL語句進行查詢。在進行SQL操作之前,需要新建注冊臨時表,然后才能進行SparkSQL查詢。1、注冊臨時表的方法:(1)createGlobalTempView(name)

此方法用于為DataFrame創(chuàng)建一個全局的臨時表。其生命周期和啟動的應用的周期一致,既啟動的spark應用存在則這個臨時的表就一直能訪問,直到退出應用為止。name為新視圖的名稱,名稱不能與已存在的一樣,否則會報錯。數(shù)據(jù)分析(2)createOrReplaceGlobalTempView(name)

此方法用于創(chuàng)建或替換視圖。當視圖名稱name已經存在,則進行替換,若其不存在,則進行創(chuàng)建。(3)createTempView(name)

此方法用于創(chuàng)建臨時視圖。name為新視圖的名稱,名稱不能與已存在的一樣,否則會報錯。(4)createOrReplaceTempView(name)此方法用于為DataFrame創(chuàng)建本地的臨時視圖,其生命周期只限于當前的SparkSession。當視圖名稱name已經存在,則進行替換,若其不存在,則進行創(chuàng)建。臨時表創(chuàng)建完成后,就可以執(zhí)行SQL語句,對表進行查詢。數(shù)據(jù)分析2、案例分析:以本章數(shù)據(jù)集中的books.csv為例,進行操作理解。(1)自定義schema,讀取books.csv文件,刪除有空缺數(shù)據(jù)的行及重復數(shù)據(jù)。(2)注冊臨時表:book2.createOrReplaceTempView("btemp")數(shù)據(jù)分析(3)進行簡單的SparkSQL查詢在臨時表中執(zhí)行SQL,查詢book_price價格小于30的書。數(shù)據(jù)分析3、對Clothing-Reviews.csv數(shù)據(jù)進行SQL探索分析。(1)查看40歲以下,不同年齡段的客戶人數(shù)。

將統(tǒng)計的年齡數(shù)量count(age)重新命名為total_nu進行輸出。并對統(tǒng)計的結果根據(jù)年齡進行升序排序。數(shù)據(jù)分析(2)統(tǒng)計recommended_IND為“不推薦”的訂單的rating評分分布。選擇rating列進行count(1)計數(shù),并限定條件為recommended_IND='不推薦',最后根據(jù)rating進行group分類。(3)為進一步了解用戶“不推薦”的原因,可以查看用戶具體評論。查看評分小于等于3且為“不推薦”的訂單的具體評論。選擇clothing_id,rating,review_text三列進行顯示,并限定條件為rating<=3并且recommended_IND='不推薦'。數(shù)據(jù)分析(4)查詢了解,不推薦的這些訂單,分別屬于哪些服裝分類,各種服裝類的不推薦數(shù)量情況是如何的。

選擇服裝分類class_name進行count()統(tǒng)計并命名為classnum,限定條件設置為recommended_IND='不推薦',最后根據(jù)class_name分類。(5)統(tǒng)計分析不同評分等級的服裝編號clothing_id情況。獲得不同服裝編號clothing_id的五星好評數(shù)量,并且降序排序。

選擇clothing_id進行count()統(tǒng)計,并重命名為five_stars_num輸出。限定條件為五星好評rating=5,以clothing_id進行分類,最后根據(jù)五星好評數(shù)量five_stars_num進行降序排序。數(shù)據(jù)分析(6)使用SparkSQL的內置函數(shù)進行相關性等分析。

在數(shù)據(jù)分析中,相關性分析可以用于分析兩個變量之間的相關方向和相關強度,從而實現(xiàn)對其中一個數(shù)據(jù)進行改變來影響另一個數(shù)據(jù)的變化。可以利用協(xié)方差函數(shù)cov()判斷兩個變量之間的相關方向??梢岳孟嚓P性函數(shù)corr()計算兩個變量之間的相關性。//協(xié)方差給出了這兩個變量之間的相關方向valcov=reviews3.stat.cov("rating","positive_feedback_count")//corr()給出了這兩個變量之間關系強度的大小valcorr=reviews3.stat.corr("rating","positive_feedback_count")1)分析“rating”評分字段和“positive_feedback_count”積極反饋數(shù)量字段之間的相關性。數(shù)據(jù)分析2)freqItems()提取數(shù)據(jù)列中最常出現(xiàn)的項。

在數(shù)據(jù)分析中,根據(jù)業(yè)務需求,可能需要知曉數(shù)據(jù)列中最常出現(xiàn)的元素,從而對決策提供依據(jù)。可以利用freqItems()函數(shù)提取數(shù)據(jù)列中最常出現(xiàn)的項,freqItems()函數(shù)中第一個參數(shù)是指定的分析列,第二個參數(shù)是指定的支持級別。

選擇服裝分類class_name作為分析列,在DataFramereviews3中,找到服裝分類出現(xiàn)概率大于40%的類別,即支持級別為0.4。數(shù)據(jù)分析3)approxQuantile()計算DataFrame中數(shù)字列的近似分位數(shù)。

計算分位數(shù)的意義是表示在這個樣本集中,從小至大排列之后,小于某值的樣本子集占總樣本集的比例。

對age列計算近似分位數(shù),指定的分位數(shù)概率為0.25、0.5和0.75(注意:0是最小值,1是最大值,0.5是中值median)。4)crosstab()探索年齡age和評分rating等級間是否有相關性。crosstab()可以對兩個變量中的每個數(shù)據(jù)進行相關性計算,從而觀察這兩個變量之間的相互關系程度與趨勢。數(shù)據(jù)輸出

數(shù)據(jù)分析后的結果最終需要保存輸出,以供決策者進行查看引用。DataFrame提供了很多種輸出操作方法,可以存儲到數(shù)據(jù)庫,也可以保存成文件。保存到文件里有兩種方法,以將數(shù)據(jù)寫入到HDFS中為例進行詳細解釋。方法一:利用save()函數(shù)保存數(shù)據(jù)。//調用save()函數(shù),保存DataFrame數(shù)據(jù)到/Chapter5/reviews目錄中。selectData.select("*").write.format("csv").save("/Chapter5/reviews")write.format()支持輸出的格式有JSON、parquet、JDBC、orc、csv、text等文件格式,save()定義保存的位置。數(shù)據(jù)輸出方法二:通過df.rdd.saveAsTextFile("file:///")轉化成rdd再保存。此方法可以將數(shù)據(jù)存儲為txt格式。將數(shù)據(jù)保存輸出到HDFS文件系統(tǒng)的/Chapter5目錄下,并命名為reviews_two.txt在線銷售訂單數(shù)據(jù)分析第二部分數(shù)據(jù)查詢操作數(shù)據(jù)分析探索情境導入

隨著電商直播與購物的盛行,大型零售商正在積極尋找增加利潤的方法。銷售分析是大型零售商通過了解客戶的購買行為和模式來增加銷售額的關鍵技術之一。查找客戶購買行為數(shù)據(jù)集,探索數(shù)據(jù)集上下文中組合在一起的項目之間的關系?,F(xiàn)有兩份在線銷售數(shù)據(jù)集orders.csv和order-details.csv,是關于不同地區(qū)、多種商品和電子產品等的銷售情況?,F(xiàn)在希望通過數(shù)據(jù)分析了解以下情況:1、此數(shù)據(jù)集中每個客戶的下單數(shù)量是多少?2、每個城市的訂單有多少?3、每個客戶的消費總額是多少?4、客戶的平均訂單消費額是多少?學習目標和要求1、靈活使用DataFrame數(shù)據(jù)操作的各種方法進行數(shù)據(jù)查詢。2、會使用聚合、連接等操作對DataFrame數(shù)據(jù)進行轉換。3、能使用聚合函數(shù)對DataFrame數(shù)據(jù)進行分析。數(shù)據(jù)查詢操作1、查看數(shù)據(jù)(1)show

該方法主要用于測試,查看輸入的數(shù)據(jù)、獲得的結果是否正確。該方法能夠以表格的形式展示DataFrame中的數(shù)據(jù)。1)show()沒有參數(shù)的show方法默認最多能夠顯示20條數(shù)據(jù)。2)show(numRows:Int)此方法可以指定要顯示的行數(shù)。數(shù)據(jù)查詢操作(2)collect()collect方法類似與SparkRDD的collect方法。與show方法不同的是,collect方法可以獲取DataFrame中的所有數(shù)據(jù),并返回一個Array對象。數(shù)據(jù)查詢操作2、過濾查詢1)where

在SQL語法中,可以通過where條件語句對數(shù)據(jù)進行過濾。在SparkSQL中,同樣可以像SQL一樣使用where(conditionExpr:String)條件語句來對數(shù)據(jù)進行過濾。可以指定條件參數(shù)conditionExpr來進行查詢,參數(shù)中可以使用and或or。數(shù)據(jù)查詢操作2)filterfilter方法和where方法類似,可以篩選出符合條件的數(shù)據(jù)。數(shù)據(jù)查詢操作3、指定列查詢1)select

在SparkSQL中可以通過select方法來查詢指定字段,類似于SQL中的select方法。查詢emp中,字段名稱為name和salary的值。數(shù)據(jù)查詢操作2)selectExpr

這個方法是select方法的一個變體,可以接受一個SQL表達式,或對某些字段做一些特殊處理。數(shù)據(jù)查詢操作4、排序操作1)orderBy

此方法能夠使數(shù)據(jù)按照指定的字段排序,默認升序排序。如果需要降序排序,可以使用desc(“字段名稱”)或者$“字段名”.desc進行處理。對emp中的salary薪水列進行降序排序:數(shù)據(jù)查詢操作2)sortsort方法與orderBy方法一樣,也是對指定字段進行排序。對emp中的salary薪水列進行升序排序。數(shù)據(jù)查詢操作5、分組聚合1)groupBy分組

此方法可以根據(jù)字段進行分組操作。調用方式可以傳入String類型的字段名,也可以是Column類型的對象。

分別以傳入String類型的字段名和Column類型的對象,對emp中的position職位進行分組。groupBy方法返回的是RelationalGroupedDataset對象,該對象提供了max()、min()、mean()、sum()、count()等相關的聚合方法,可以對分組后的數(shù)據(jù)進行指定的聚合操作。數(shù)據(jù)查詢操作2)agg聚合

該方法一般與groupBy方法配合使用。agg(expers:column*)可以傳入一個或多個Coumn對象,返回DataFrame。

以position職位進行分組,計算各職位薪水的平均值,并命名為average_wages。數(shù)據(jù)查詢操作6、聚合函數(shù)

聚合是大數(shù)據(jù)分析領域中最常用的特性之一。SparkSQL提供了很多常用的聚合函數(shù),比如sum、count、avg等等。(1)count函數(shù)count可以執(zhí)行以下2種操作:對指定列進行計數(shù);使用count(*)或count(1)對所有列進行計數(shù)。(2)countDistinct函數(shù):此函數(shù)可以計算每個組的唯一項。數(shù)據(jù)查詢操作(3)approx_count_distinct函數(shù)

此函數(shù)的功能與countDistinct一樣,但是統(tǒng)計的結果允許有誤差。這里approx_count_distinct的另一個參數(shù)就指定了可容忍的誤差的最大誤差。(4)sum函數(shù):計算一個數(shù)字列中的所有值的總和。(5)sumDistinct函數(shù):計算一個數(shù)字列中不同值的總和,重復的數(shù)值將不被計算。數(shù)據(jù)查詢操作(6)avg函數(shù):計算一個數(shù)字列的平均值。(7)min函數(shù)、max函數(shù):統(tǒng)計出指定列的最小值和最大值。數(shù)據(jù)查詢操作7、連接操作

實際工作中,有時候數(shù)據(jù)并不是在同一個表中,此時根據(jù)業(yè)務需求,就需要連接兩個表才可以查詢相關的需求結果。在DataFrame中提供了join功能實現(xiàn)連接的效果。1)內連接

內連接查詢操作是列出與連接條件匹配的數(shù)據(jù)行,它使用比較運算符比較被連接列的列值。數(shù)據(jù)查詢操作2)左外連接

此連接方式是以左表為基準,將數(shù)據(jù)進行連接,然后將左表中所有數(shù)據(jù)都顯示,右表對應的列設置為NULL。數(shù)據(jù)查詢操作3)右外連接

是以右表為基準,將數(shù)據(jù)進行連接,然后將右表所有的數(shù)據(jù)進行顯示,左表對應的列設置為NULL。數(shù)據(jù)查詢操作4)全外連接全外連接是在等值連接的基礎上將左表和右表的未匹配數(shù)據(jù)都加上。數(shù)據(jù)查詢操作5)LeftSemi-Join這種join類型的行為類似于內連接類型,連接后的數(shù)據(jù)集只包含匹配的行。6)交叉連接(又稱為Cartesian-笛卡爾連接)當執(zhí)行join連接時不指定參數(shù),得到的也是笛卡爾積結果。數(shù)據(jù)探索分析

基于前述的知識與方法,本節(jié)將對在線銷售數(shù)據(jù)集orders.csv和order-details.csv進行分析探索,解決情景導入中提出的問題。1、數(shù)據(jù)準備(1)上傳orders.csv和order-details.csv數(shù)據(jù)集到HDFS文件系統(tǒng)中。(2)加載數(shù)據(jù)集到RDD及DataFrame中。數(shù)據(jù)探索分析2、問題分析(1)此數(shù)據(jù)集中每個客戶的下單數(shù)量是多少?

每個客戶的下單情況數(shù)據(jù)在DataFrameorders中。orders中的每一條數(shù)據(jù)就是一個訂單。因此,只需要對其中的full_name用戶姓名列進行groupBy()分類并利用count()計算總數(shù)即可。最后還可以利用sort()方法,對客戶下單量進行降序排序,獲得下單最多的用戶的信息。數(shù)據(jù)探索分析(2)每個城市的訂單有多少?此問題的分析思路與前一題相同,只需將分析的列替換為city城市。數(shù)據(jù)探索分析(3)每個客戶的消費總額是多少?

針對此問題,需要對數(shù)據(jù)做一些轉換。觀察order-details.csv中的數(shù)據(jù)可以發(fā)現(xiàn),每一條記錄中記錄著商品的單價和銷售數(shù)量,并且有些商品是有折扣的。每條記錄中,有的商品銷售記錄是來自同一個訂單,也就是同一個客戶購買的。所以要計算每個客戶的年消費總額,首先要計算出每條記錄的消費數(shù)量,接著根據(jù)訂單編號進行求和,獲得每個客戶的消費總額情況。1)計算orders_details中每行商品的實際銷售金額。實際銷售金額=商品價格*已訂購數(shù)量-商品價格*已訂購數(shù)量*折扣百分比2)按照訂單編號order_id統(tǒng)計每張訂單的總金額。

根據(jù)訂單編號"order_id"利用groupBy()對前面計算獲得的數(shù)據(jù)orders_details1進行分類,再利用sum()函數(shù)對消費金額expend_amount列進行求和并重命名為OrderTotal,從而獲得每張訂單的總金額。數(shù)據(jù)探索分析3)進行等值內連接,并增加訂單總金額。

客戶編號、客戶名字等信息均在DateFrameorders中,每張訂單的總金額數(shù)據(jù)在ordertotal中,要想獲得“每個客戶的消費總額”,就需要連接相關的數(shù)據(jù)表。數(shù)據(jù)探索分析(4)數(shù)據(jù)集中,客戶的平均訂單消費額是多少?

對客戶編號cust_id和客戶名字full_name進行groupBy分類,再對Total_consumption做avg平均即可得到客戶的平均訂單消費額。小結

本章介紹了使用SparkSQL進行數(shù)據(jù)分析與探索。通過“女裝電子商務評論情況分析”和“在線銷售訂單數(shù)據(jù)分析”兩個案例掌握數(shù)據(jù)準備、清洗、轉換、分析、輸出、查詢過程中用到的DataFrame操作方法。THANKS!6Zepplin數(shù)據(jù)可視化Zepplin安裝部署第一部分下載與安裝測試運行Zeppelin情境導入

數(shù)據(jù)可視化可以使數(shù)據(jù)信息更清晰形象的展示給數(shù)據(jù)分析人員,也為數(shù)據(jù)分析結果匯報呈現(xiàn)提供了有效途徑。Zeppelin是Apache基金會下的一個開源框架,它提供了一個數(shù)據(jù)可視化的框架。具有數(shù)據(jù)提取、數(shù)據(jù)發(fā)掘、數(shù)據(jù)分析、數(shù)據(jù)可視化展示與合作等功能。學習目標和要求1、會下載、安裝、配置Zepplin可視化工具。2、會在Zepplin中配置Spark解釋器。下載與安裝Zepplin可視化工具的安裝包可以直接通過其官網下載。通過下載地址:/download.html,選擇zeppelin-0.10.1-bin-all.tgz包進行下載。下載與安裝1、安裝步驟(1)將Zepplin安裝包上傳到master節(jié)點的/root目錄下。(2)解壓并重命名目錄。(3)修改配置文件zeppelin-env.sh。在文件最后添加以下配置內容:下載與安裝2、Zeppelin控制臺

啟動Zeppelin后,通過瀏覽器訪問30:9090可以打開Zeppelin控制臺。下載與安裝3、Zeppelin中的Spark解釋器配置

目前,Zeppelin支持Scala、Python、Flink、SparkSQL、Hive、JDBC、Markdown、Shell等多種解釋器。(1)anonymous用戶按鈕,打開解釋器配置界面。(2)搜索spark解釋器,進入spark解釋器配置界面進行設置。測試運行Zeppelin1、測試自帶的BasicFeature(Spark)案例

點擊菜單欄中的Notebook按鈕,找到并點擊SparkBasicFeatures,本案例是對一份銀行數(shù)據(jù)進行分析及可視化。測試運行Zeppelin2、測試運行自編代碼(1)Zeppelin控制臺首頁,點擊“Createnewnote”按鈕,創(chuàng)建一個新的notebook。(2)在彈出的窗口中填寫新文件的路徑和名稱,選擇解釋器,此處選擇默認的spark解釋器即可。最后點擊Create按鈕,創(chuàng)建文件。(3)在新建的notebook界面執(zhí)行以下代碼。女裝電子商務評論情況數(shù)據(jù)可視化第二部分加載數(shù)據(jù)注冊視圖執(zhí)行SQL數(shù)據(jù)可視化情境導入

在第五章中,我們利用SparkSQL在spark-shell中輸入代碼,對“女裝電子商務評論情況”數(shù)據(jù)集進行了分析。但是通過此方法分析獲得的結果都是二維數(shù)據(jù)表數(shù)據(jù),數(shù)據(jù)特征不夠直觀生動,不利于總結分析匯報。因此,此女裝線上商店負責人希望能對數(shù)據(jù)進行可視化,以幫助她們更好的進行決策。在Zeppelin的notebook中使用SQL解釋器,可以將查詢的結果以條狀圖、散點圖、折線圖等常見的方式進行可視化展示。學習目標和要求1、掌握在Zepplin中使用SparkSQL注冊視圖2、能使用Zepplin執(zhí)行SparkSQL命令實現(xiàn)數(shù)據(jù)可視化。加載數(shù)據(jù)注冊視圖1、啟動Hadoop集群、Spark集群和Zeppelin啟動。在Zeppelin中創(chuàng)建一個新的notebook,并命名為“clothing_reviews”。2、讀取HDFS文件系統(tǒng)中的CSV文件,自定義schema并轉換為DataFrame。加載數(shù)據(jù)注冊視圖3、對“Clothing-Reviews.csv”女裝電子商務評論數(shù)據(jù)集進行數(shù)據(jù)清洗,刪除重復的數(shù)據(jù),對有空缺數(shù)據(jù)的行進行刪除。加載數(shù)據(jù)注冊視圖4、對“Clothing-Reviews.csv”女裝電子商務評論數(shù)據(jù)集進行數(shù)據(jù)轉換,將recommended_IND(是否推薦)列中的1替換為推薦,0替換為不推薦。加載數(shù)據(jù)注冊視圖5、使用createOrReplaceTempView()方法創(chuàng)建本地的臨時視圖clothing_review

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論