大數據分析及應用項目教程(Spark SQL)(微課版) 課件全套 許慧 第1-6章 大數據分析概述、實踐環境準備- Zepplin數據可視化_第1頁
大數據分析及應用項目教程(Spark SQL)(微課版) 課件全套 許慧 第1-6章 大數據分析概述、實踐環境準備- Zepplin數據可視化_第2頁
大數據分析及應用項目教程(Spark SQL)(微課版) 課件全套 許慧 第1-6章 大數據分析概述、實踐環境準備- Zepplin數據可視化_第3頁
大數據分析及應用項目教程(Spark SQL)(微課版) 課件全套 許慧 第1-6章 大數據分析概述、實踐環境準備- Zepplin數據可視化_第4頁
大數據分析及應用項目教程(Spark SQL)(微課版) 課件全套 許慧 第1-6章 大數據分析概述、實踐環境準備- Zepplin數據可視化_第5頁
已閱讀5頁,還剩237頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

第1章大數據分析概述關于大數據分析第一部分什么是大數據分析大數據分析可視化大數據分析工具學習目標和要求1、了解大數據分析的概念、特點、類別、優缺點。2、知道大數據分析的相關工具。3、了解大數據分析可視化的概念及相關工具。什么是大數據分析12345Volume(容量)Velocity(速度)Variety(種類)Value(價值)Veracity(真實性)1、大數據的“5V”特征大數據是指無法在一定時間范圍內用常規軟件工具進行捕捉、管理和處理的數據集合,大數據分析就是指對規模巨大的數據進行數據分析。什么是大數據分析2、大數據分析概念數據分析量大1234數據處理速度快數據分析類型多數據價值密度低3、大數據分析的特點BigDataAnalysis5數據的可靠性低什么是大數據分析什么是大數據分析4、大數據分析類別預測分析關注的是對未來事件的預測。預測性分析規范性分析是指在發生問題之后,根據問題診斷性分析之后,結合預測性分析,做出相應的優化建議和行動。規范性分析針對過去已經發生的事情,分析該事件產生的原因。診斷性分析描述性分析是描述過去的數據,基于歷史數據描述發生了什么,對過去的大量歷史數據進行匯總分析描述,以簡單可讀的方式進行呈現。描述性分析為優質決策提供參考;提高產品開發創新力;改善客戶服務體驗;提升風險管理優勢缺點信息透明化成本高數據質量低技術更新變化快什么是大數據分析5、大數據分析的優勢與缺點大數據分析工具(1)ApacheSpark:具有SparkSQL、Streaming實時計算、機器學習和SparkGraphX圖計算的內置功能。(2)Hbase:HBase是一個基于HDFS的面向列的分布式數據庫。(3)Storm:Storm是流處理的代表性實現之一。Storm具有低延遲、高性能、分布式、可擴展、容錯、可靠性、快速等特點。(4)Flink:

Flink是一個框架和分布式處理引擎,用于在無邊界和有邊界數據流上進行有狀態的計算。1、Hadoop生態圈中的大數據分析工具123編程語言Scala語言:Scala語言是基于JVM運行環境、面向對象和函數式編程的完美結合Python語言:Python在數據分析領域也是一個強大的語言工具。R語言:是大數據分析工具之一,可用于科學計算、統計分析、數據可視化等。大數據分析工具2、大數據分析編程語言RapidMiner其特點是拖拽操作,無需編程,運算速度快,具有豐富數據挖掘分析和算法功能,常用于解決各種商業關鍵問題。12MongoDB是一個基于分布式文件存儲的數據庫。旨在為WEB應用提供可擴展的高性能數據存儲解決方案。大數據分析工具3、其他工具

數據可視化是利用計算機以圖形圖表的形式將原始的抽象信息和數據直觀的表示出來。

大數據分析可視化工具有很多,比如Zeppelin、PowerBI、Tableau、Spass等等。大數據分析可視化認識SparkSQL第二部分SparkSQL背景簡介SparkSQL運行原理學習目標和要求1、了解SparkSQL的背景、特點。2、知道SparkSQL的運行架構。3、掌握Catalyst查詢編譯器的工作流程。4、掌握SparkSQL運行流程。HiveSharkSparkSQLHive是最原始的SQL-on-Hadoop工具。是Facebook開發的構建于Hadoop集群之上的數據倉庫應用,它提供了類似于SQL語句的HQL語句作為數據訪問接口脫離了Hive的依賴,SparkSQL在數據兼容、組件擴展、性能優化方面都得到了極大的提升。Shark是使用Scala語言開發的開源SQL查詢引擎。其設計目標是作為Hive的補充,性能比Hive提高了10-100倍。但是Shark對于Hive依舊存在很多的依賴。SparkSQL背景簡介1、SparkSQL的背景多種性能優化技術組件擴展性用戶可以對SQL的語法解析器、分析器以及優化器進行重新定義和開發,并動態擴展。采用內存列存儲(In-MemoryColumnarStorage),字節碼生成技術(byte-codegeneration),CostModel對查詢操作進行動態評估、獲取最佳物理計劃等。支持多種數據源可以在Hive上運行SQL或者HQL;可以從RDD、parquet文件、JSON文件中獲取數據。SparkSQL背景簡介2、SparkSQL的特點SparkSQL背景簡介多種性能優化技術內存列存儲(In-MemoryColumnarStorage)JVM對象存儲和內存列存儲對比SparkSQL背景簡介多種性能優化技術字節碼生成技術(byte-codegeneration)例如執行selecta+bfromtable這條命令通用的SQL方法:首先將生成一個表達式,并多次調用虛函數。SparkSQL:在其catalyst模塊的expressions中增加了codegen模塊。使用動態字節碼生成技術來優化其性能,對匹配的表達式采用特定的代碼動態編譯,然后運行。SparkSQL運行原理1、SparkSQL的運行架構SparkSQL的整體架構SparkSQL是由Catalyst,Core,Hive和Hive-Thriftserver四個子項目組成。SparkSQL運行原理(1)Catalyst:負責處理整個查詢過程,包括解析、綁定、優化等,將SQL語句轉換成物理執行計劃。(2)Core:用于將Catalyst的邏輯查詢計劃轉換為SparkRDD代碼。(3)Hive:Hive組件包括HiveContext和SQLContext,允許用戶使用HiveQL的子集編寫查詢。(4)Hive-Thriftserver:支持HiveServer和CLI。SparkSQL運行原理2、Catalyst查詢編譯器(1)Catalyst的組成:Parser、Analyzer、Optimizer、Planner(2)Catalyst的工作流程Catalyst運行流程SparkSQL運行原理3、SparkSQL的運行原理(1)傳統SQL的運行流程詞法和語法解析(Parse)綁定(Bind)優化(Optimize)執行(Execute)SparkSQL運行原理(2)SparkSQL運行流程SessionCatalog保存元數據ANTLR生成未綁定的邏輯計劃Analyzer綁定邏輯計劃Optimizer優化邏輯計劃SparkPlanner生成可執行的物理計劃CostModel選擇最佳物理執行計劃execute執行物理計劃小結

本章首先對大數據分析進行了介紹,詳細闡述了大數據分析的相關概念、特點、類別及優缺點;簡單介紹了大數據分析的常用工具;并對大數據分析可視化的優勢價值等進行了分析。然后對大數據分析工具中的SparkSQL展開了詳盡的描述,包括SparkSQL的發展演變歷程、特點、運行架構原理等內容。THANKS!第2章實踐環境準備Hadoop集群環境搭建第一部分環境準備啟動Hadoop集群運行經典案例wordcount安裝Hadoop學習目標和要求1、掌握Hadoop集群環境搭建的環境準備工作,包括配置主機名、防火墻設置、免密登錄設置、Java環境設置。2、掌握安裝Hadoop的過程、配置文件設置及啟動集群的方法。3、會在Hadoop集群運行經典案例wordcount。環境準備1、集群節點規劃此集群由三個節點構成,分別是master、slaver01、slaver02。集群搭建部署均在虛擬機中完成,使用VMwareWorkstation16Pro虛擬計算機軟件。環境準備2、配置主機名和IP(1)修改對應虛擬機的IP地址:

vi/etc/sysconfig/network-scripts/ifcfg-ens33(2)將三臺虛擬機的主機名修改為master、slaver01、slaver02。

hostnamectlset-hostname主機名(3)重啟網絡,使網絡配置生效。

systemctlrestartnetwork環境準備3、連接MobaXterm終端工具使用MobaXterm終端工具,為master、slaver01和slaver02創建SSH連接。環境準備4、關閉防火墻

防火墻是對服務器進行保護的一種服務,但有時候會帶來很多麻煩,它會妨礙Hadoop集群間的相互通信,所以我們要關閉防火墻。關閉master、slaver01和slaver02主機的防火墻,并設置開機不自啟。systemctlstatusfirewalldsystemctlstopfirewalldsystemctldisablefirewalldsystemctlstatusfirewalld環境準備5、關閉SElinuxSELINUX是對系統安全級別更細粒度的設置。關閉master、slaver01和slaver02主機的SElinux。vi/etc/sysconfig/selinux環境準備6、修改/etc/hosts文件修改master、slaver01和slaver02主機的/etc/hosts文件,建立主機和ip地址之間的映射關系。vi/etc/hosts7、配置免密登錄首先在master節點創建生成密鑰。將密鑰拷貝到slaver01和slaver02兩個節點,完成免密登錄配置。環境準備8、配置Java環境在master節點上傳JDK軟件包并解壓。在.bash_profile文件中配置環境變量。使用source.bash_profile命令,使.bash_profile文件配置生效。查看Java版本,驗證安裝成功。使用scp命令將jdk解壓安裝相關文件分發到slaver01和slaver02節點。安裝Hadoop

由于三個節點都需要安裝Hadoop,為了提高部署效率,先在master節點進行部署安裝,然后將相關的文件和配置拷貝分發到另外兩個節點中。上傳Hadoop安裝包并解壓。修改環境變量。使環境變量生效。修改hadoop的配置文件hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml、workers。分發Hadoop和環境變量文件到slaver01和slaver02。格式化HDFS文件系統。啟動Hadoop集群1、啟動Hadoop集群只需要在master節點輸入start-all.sh。接著查看各節點的服務進程。2、打開Google瀏覽器,輸入地址30:8088,可以打開Yarn頁面。3、輸入地址30:9870,可以打開HDFS頁面。案例wordcount通過經典案例wordcount,體驗Hadoop運行MapReduce計算。1、在本地root目錄下創建一個txt文件,輸入一段自定義文字。2、上傳文本到到hdfs。案例wordcount3、運行命令并查看結果hadoopjarhadoop-mapreduce-examples-3.2.1.jarwordcount/input/outputSpark集群部署與使用第二部分Spark安裝啟動SparkSpark集群測試學習目標和要求1、掌握Spark集群安裝配置方法。2、會啟動關閉Spark集群。3、能使用Spark-shell進行簡單編程測試。Spark安裝1、上傳軟件包使用MobaXterm工具,將軟件包上傳至master節點的root目錄下,然后將其解壓到/usr/local目錄中。Spark安裝2、在.bash_profile文件中修改環境變量執行source.bash_profile使環境變量生效Spark安裝3、修改Spark配置文件(1)配置spark-env.sh文件(2)配置workers文件4、復制修改spark啟動腳本,避免和hadoop的啟動腳本沖突。5、分發Spark安裝文件到slaver01和slaver02。啟動Spark1、在master節點輸入start-spark-all.sh,啟動Spark。2、查看各節點服務進程狀態(此處已經啟動Hadoop集群)啟動Spark3、Web查看Spark主頁情況在瀏覽器中輸入地址30:8080/,進行查看。Spark集群測試1、使用spark-submit工具提交Spark作業spark-submit提交任務及參數說明:--class:應用程序的主類,僅針對java或scala應用。--master:master的地址,提交任務到哪里執行,例如spark://host:port,yarn,local。--driver-memory:driver進程所使用的內存數量,以字節為單位。可以指定不同的后綴如“512m”或“15g”,默認是1G。--executor-memory:executor使用的內存數量,以字節為單位。可以指定不同的后綴如“512m”或“15g”,默認是1G。--total-executor-cores:所有executor總共的核數。僅僅在mesos或者standalone下使用。Spark集群測試Spark集群測試2、使用Spark-sql(1)輸入spark-sql命令,啟動spark-sql。(2)使用SQL命令,執行創建數據庫、創建表等操作。Spark集群測試3、使用Sparkshell(1)輸入spark-shell命令,啟動spark-shell。(2)執行SparkShell常用命令Spark集群測試(2)執行SparkShell常用命令①:help命令,查看SparkShell常用的命令Spark集群測試(2)執行SparkShell常用命令②:paste命令,進入paster模式Scala安裝第三部分下載安裝包安裝配置學習目標和要求1、會下載、安裝配置Scala工具。2、能啟動Scala進行編程測試。下載安裝包通過連接地址/download/2.13.6.html直接下載scala-2.13.6.tgz壓縮包。安裝配置1上傳安裝包并解壓2配置環境變量,添加Scala相關配置安裝配置3使環境變量生效,查看Scala版本4啟動Scala小結

本章通過詳細的操作步驟與結果分析,介紹Hadoop集群環境搭建、Spark集群部署與使用、Scala的安裝運行。詳細闡述了各個集群環境搭建中的相關配置文件。THANKS!第3章學生信息處理分析班級基本情況分析第一部分學生所屬班級和男女生數量以班級為單位整理學生信息情境導入

現有一份某校信息工程學院所有班級學生的基本情況數據,如下圖所示。數據包含8個字段,分別為學號、姓名、性別、年級、班級、語文成績、數學成績、英語成績。當下輔導員想通過一位學生的學號獲知其所屬的班級,同時也想對各班級基本情況進行了解,以便后續的工作開展。學習目標和要求掌握Scala判斷與循環、函數式編程。掌握Scala集合操作。掌握Scala數據類型、常量與變量、運算符、數組。學生所屬班級和男女生數量——理論基礎1、數據類型數據類型類型描述Byte表示8位有符號補碼整數。其數值區間從-128到127。Short表示16位有符號補碼整數。其數值區間為-32768到32767。Int表示32位有符號補碼整數。其數值區間為-2147483648到2147483647。表示只能保存整數。Long表示64位有符號補碼整數。其數值區間為-9223372036854775808到9223372036854775807。Float表示32位IEEE754標準的單精度浮點數。如果浮點數后面有f或者F后綴時,表示這是一個Float類型,否則就是一個Double類型的。Double表示64位IEEE754標準的雙精度浮點數。Char表示16位無符號Unicode字符,區間值為U+0000到U+FFFF。String表示字符序列。即字符串,使用時需要使用雙引號包含一系列字符。Boolean其值為true或false。Unit表示無值,和其他語言中void等同。用于不返回任何結果的方法的結果類型。Unit只有一個實例值,寫成()。Nullnull或空引用NothingNothing類型在Scala的類層級的最底端,是任何其他類型的子類型。AnyAny是所有其他類的超類。AnyRefAnyRef類是Scala里所有引用類(referenceclass)的基類。Scala與Java的數據類型相同,但是Scala中的數據類型都是對象即Scala沒有java中的原生類型。因此Scala可以對數字等基礎類型調用方法。學生所屬班級和男女生數量——理論基礎2、常量與變量1)定義方法在Scala中,定義常量的關鍵字是“val”,語法格式如下:

val常量名稱:數據類型=初始值val一經初始化就無法再進行修改,否則會報錯。在Scala中,定義變量的關鍵字是“var”,語法格式如下:

var變量名稱:數據類型=初始值學生所屬班級和男女生數量——理論基礎2)數據類型推斷

Scala具備數據類型推斷的功能,因此在定義常量或者變量時,可以不用特地說明數據的類型,即可以不在常量或變量名稱后面添加“:type”數據類型項。3)多變量聲明學生所屬班級和男女生數量——理論基礎A.若聲明的多個變量初始值相同,則只需用逗號分隔:B.若聲明的多個變量初始值不相同,則需將它們聲明為元組:3、運算符運算符類別運算符描述舉例算數運算符舉例中假設a=1,b=2算數運算符

+加號a+b運算結果為3-減號a-b運算結果為-1*乘號a*b運算結果為2/除號b/a運算結果為2%取余b%a運算結果為0Scala中運算符即方法、方法即運算符。學生所屬班級和男女生數量——理論基礎學生所屬班級和男女生數量——理論基礎關系運算符舉例中假設a=1,b=2關系運算符==等于a==b運算結果為false>大于a>b運算結果為false<小于a<b運算結果為true>=大于等于a>=b運算結果為false<=小于等于a<=b運算結果為true!=不等于a!=b運算結果為true邏輯運算符舉例中假設變量a為1,b為0邏輯運算符&&與,當兩個條件均成立則為真,否則為假a&&b運算結果為false||或,當兩個條件有一個成立則為真,否則為假a||b運算結果為true!非,對當前條件取反!(a&&b)運算結果為true學生所屬班級和男女生數量——理論基礎位運算符舉例中假設a=00111100,b=00001101位運算符&按位與,數據按照二進制位進行運算,兩位均為1則結果為1,否則為0a&b的運算結果為00001100|按位或,數據按照二進制位進行運算,兩位有一個為1則結果為1a|b的運算結果為00111101^按位異或,數據按照二進制位進行運算,兩位不同時結果為1,相同時為0a^b的運算結果為00110001~按位取反,數據按照二進制位進行運算,是1則變為0,是0則變成1~a的運算結果為11000011<<數據按照二進制位進行運算,左移a<<2的運算結果為11110000>>數據按照二進制位進行運算,右移a>>2的運算結果為00001111>>>數據按照二進制位進行運算,無符號右移a>>>2的運算結果為00001111學生所屬班級和男女生數量——理論基礎賦值運算符=指定右邊操作結果賦值給左邊c=a+b將a+b的運算結果賦值給c+=左右兩側相加后賦值給左邊c+=a即c=c+a-=左右兩側相減后賦值給左邊c-=a即c=c-a*=左右兩側相乘后賦值給左邊c*=a即c=c*a/=左右兩側相除后賦值給左邊c/=a即c=c/a%=左右兩側求余后賦值給左邊c%=a即c=c%a<<=按位左移后再賦值給左邊c<<=a即c=c<<a>>=按位右移后再賦值給左邊c>>=a即c=c>>a&=按位與運算后賦值給左邊c&=a即c=c&a|=按位或運算后再賦值給左邊c|=a即c=c|a^=按位異或運算后再賦值給左邊c^=a即c=c^a學生所屬班級和男女生數量——理論基礎4、數組

在Scala語言中,提供了一種數據結構叫作數組,數組是用于存儲相同類型變量的集合。數組分為定長數組(Array)和變長數組(ArrayBuffer)。1)聲明與定義方式使用new的完整形式,其語法如下:vararrname:Array[type]=newArray[type](size)使用new的簡寫形式,其語法如下:vararrname=newArray[type](size)使用定義并初始化的方式,其語法如下:vararrname=Array(element1,element2,element3)變長數組:定義與聲明方式與定長數組的相同,但是需要先導入importscala.collection.mutable.ArrayBuffer依賴包。定長數組:學生所屬班級和男女生數量——理論基礎2)基本操作方法

數組的基本操作方法:基本操作描述arr.sum對于Int數據類型的數組,返回數組各元素的和arr.max對于Int數據類型的數組,返回數組各元素的最大值arr.min對于Int數據類型的數組,返回數組各元素的最小值arr.length返回數組的長度arr.sorted.toBuffer對于Int數據類型的數組,返回數組各元素由小到大排序結果arr.reverse.toBuffer對于Int數據類型的數組,返回數組各元素倒序arr.contains(x)判斷數組中是否包含x元素arr.isEmpty判斷數組是否為空學生所屬班級和男女生數量——理論基礎5、判斷與循環Scala的判斷與循環語法與其他計算機語言一樣。if判斷可以對數據進行過濾判斷處理,while和for循環可以在某一條件下將某段代碼進行重復執行。1)if判斷if判斷有三種形式,分別為if語句、if…else語句、if…elseif…else語句和if…else嵌套語句。2)循環在Scala語言中循環也有三種方式,分別為while循環、do...while循環和for循環。學生所屬班級和男女生數量——理論基礎6、函數式編程1)函數的定義和調用def函數名[參數列表]:[返回值類型]={

函數體return[表達式]}函數調用的方法如下:

函數名[參數列表]函數的定義方法:學生所屬班級和男女生數量——理論基礎2)匿名函數匿名函數是指不含函數名稱的函數。使用“=>”定義,“=>”的左邊為參數列表,“=>”右邊為函數體表達式。匿名函數雖然沒有函數名,但是可以將其賦值給一個常量或者變量,然后通過常量或者變量名進行函數調用。學生所屬班級和男女生數量——理論基礎3)高階函數

高階函數是指使用其他函數作為參數,或者使用函數作為輸出結果的函數。舉例:使用其他函數作為參數的高階函數學生所屬班級和男女生數量——理論基礎舉例,使用函數作為輸出結果的高階函數學生所屬班級和男女生數量——理論基礎4)閉包閉包是一個函數,是可以訪問一個函數里面局部變量的另外一個函數。定義一個函數:valmore=2defaddmore=(x:Int)=>x+moreaddmore(3)定義addmore函數的過程就是“捕獲”其自由變量從而“閉合”該函數的動作。學生所屬班級和男女生數量——理論基礎5)函數柯里化

函數編程中,接受多個參數的函數都可以轉化為接受單個參數的函數,這個轉化過程就是柯里化。柯里化本身也用到了閉包。//未柯里化方式defmul(x:Int,y:Int)=x*ymul(2,2)//閉包方式defmulclosure(x:Int)=(y:Int)=>x*yprintln(mulclosure(3)(4))//函數柯里化方式defmulcurry(x:Int)(y:Int)=x*yprintln(mulcurry(5)(6))學生所屬班級和男女生數量——理論基礎6)嵌套函數嵌套函數即在函數內部定義函數,其中內部函數稱為局部函數。學生所屬班級和男女生數量——編程分析實現1、判斷學生所屬班級

完成此任務首先需要用數組存儲各個班級學生的學號,然后定義函數識別某個學生的學號獲取其所屬班級。1)定義班級數組2)定義distinguish函數,利用if…elseif…else語句進行判斷識別學號。2、統計男女生人數信息

定義函數count(sex:String)統計男女生人數。在count(sex:String)函數中利用數組存儲數據信息,通過for循環遍歷數組并利用if判斷數組中元素是否包含指定性別,并進行sum計數。以班級為單位整理學生信息——理論基礎1、列表Scala列表與數組類似,所有元素的類型都相同。它們的區別首先是列表是不可變的,其次列表具有遞歸的結構而數組不是。1)定義列表定義不可變列表語法://創建一個包含值1,值2,值3,值...的不可變列表var/val變量名:List[元素類型]=List[元素類型](值1,值2,值3,值...)//使用“::”拼接方式來創建列表,必須在最后添加一個Nilval/var變量名=值1::值2::Nil以班級為單位整理學生信息——理論基礎//導入相關依賴包importscala.collection.mutable.ListBuffer//創建一個空的可變列表val/var變量名:ListBuffer[類型]=newListBuffer[類型]()//創建一個包含值1,值2,值3...的可變列表val/var變量名=ListBuffer(值1,值2,值3...)定義可變列表語法:以班級為單位整理學生信息——理論基礎2)列表的常用操作以下是可變和不可變列表的常用操作。方法(對列表a和b進行操作)描述a.isEmpty判斷列表是否為空a++b拼接兩個列表a.head獲取列表的首個元素a.tail獲取列表除首個元素以外的剩余部分a.reverse反轉列表a.take(num)獲取指定個數的前綴a.drop(num)刪除從左邊開始的num個元素a.toString轉換字符串a.toArray將列表轉換為數組List.concat(a,b)合并兩個列表ersect(b)對兩個列表取交集a.diff(b)對兩個列表取差集a(索引值)獲取列表中指定索引值的元素以班級為單位整理學生信息——理論基礎可變列表的常用操作方法(對列表a和b進行操作)描述a+=元素為列表添加元素a++=b追加一個列表a-=元素刪除列表中的元素a.toList將可變列表轉換為不可變列表

雖然可變和不可變列表都有添加、刪除、合并等操作,但是兩者有一個非常大的差別。對不可變列表進行操作,會產生一個新的列表,原來的列表并沒有改變。對可變列表進行操作,改變的是該列表本身。2、Set集合以班級為單位整理學生信息——理論基礎Set是無序,不可重復的集合。Set集合分為可變的和不可變的。Scala默認創建的是不可變的Set集合,若要創建可變的Set集合,需要先導入依賴包。1)定義Set集合

val

變量名:Set[類型]=Set[類型](值1,值2,值3...)舉例:vala=Set(9,2,5,4,8)以班級為單位整理學生信息——理論基礎可變和不可變Set集合的常用操作方法方法(對Set集合a或b進行操作)描述a.drop(num)刪除從左邊開始的num個元素a.contains(元素)判斷集合是否包含此元素a.size集合的大小a++b合并Set集合2)Set的基本操作以班級為單位整理學生信息——理論基礎不可變Set集合的添加/刪除操作方法方法(對不可變Set集合a和b進行操作)描述a+元素添加元素a-元素刪除元素可變Set集合的添加/刪除操作方法方法(對可變Set集合a和b進行操作)描述b.add(元素)添加元素b.remove(元素)刪除元素b+=元素添加元素b-=元素刪除元素a++=b元素合并Set集合3、元組以班級為單位整理學生信息——理論基礎

元組是不同類型值的聚集,它可以將不同類型的值放在一個變量中進行存儲。定義元組的語法一:valtuple=(元素1,元素2,元素3…)定義元組的語法二:valt=newTuplen(元素1,元素2,元素3...元素n)

當需要訪問元組中的某個元素的值時,可以通過“元組名_元素索引”進行訪問。4、Map映射以班級為單位整理學生信息——理論基礎1)映射定義:

映射是一系列鍵值對的集合。映射中的鍵都是唯一的,并且可以通過鍵獲取值。可變映射的定義需要先導入相關依賴包。2)映射的常用操作:方法(對映射a和b進行操作)描述a.keys獲取所有的keya.values獲取所有的valuea(key)使用key獲取value,如果key不存在會報錯a.contains(key)查看Map中是否存在指定的keya.isEmpty檢查map是否為空a++b合并兩個map,如果key重復,++后者會替換掉前邊的key對應的value5、函數組合器以班級為單位整理學生信息——理論基礎

函數組合器在實際操作中非常實用。組合器包括map、filter、foreach、groupBy、flatten、drop、zip等。組合器可以對集合中的每個元素進行指定的操作,并將結果形成集合輸出。組合器描述map將某個函數應用到中的每個元素,并將結果形成集合輸出。filter指定條件,對集合中的元素進行過濾foreach對集合中的每個元素進行作用,但是沒有返回值。groupBy對集合中的元素進行分組操作,得到一個Map。flatten可以把嵌套的結構展開。drop去掉集合前面的n個元素zip將兩個集合結合在一起以班級為單位整理學生信息——編程分析實現

以班級為單位整理學生信息,可以先將數據保存到列表中,然后使用groupBy組合器以班級為條件進行分組。1)在scala命令輸入行輸入以下命令,創建列表保存數據。valdata=List("21103,嚴林石,男,21級,大數據1班,89,97,91","21108,莊偉康,男,21級,大數據1班,67,94,87","21208,陳心雨,女,21級,大數據2班,84,92,91","21107,鄒和俊,男,21級,大數據1班,77,83,88")以班級為單位整理學生信息——編程分析實現2)接著應用groupBy組合器進行分組,分組條件是班級。因此需要選取班級列進行操作,使用“,”對列表中每條數據進行split分隔,班級數據是在第4列。由此實現了以班級為單位整理學生信息。學生基本情況獲取第二部分學生特長情況學生成績情況分析情境導入

在掌握了前一節中Scala的基本知識后,李雷同學提出了新的疑問。Scala作為一門純粹的面向對象的語言它的類和對象又有什么特點?定義和使用方法又是如何的?通過接下來對Scala類和對象、模式匹配等知識的學習,能對學生特長情況與成績情況進行分析。學習目標和要求1、了解Scala類和對象、模式匹配的基本概念。2、掌握Scala類和對象、模式匹配的定義及操作方法。3、能綜合應用Scala基礎知識編寫應用程序進行數據分析。1、類和對象學生特長情況——理論基礎

類和對象是Scala面向對象語言的兩個重要概念。類是對象的抽象,而對象是類的具體實例。類的定義方式如下:Class類名稱(參數列表){//定義類的字段和方法}

繼承是面向對象開發語言中的一個概念,繼承可以使得子類具有父類的屬性和方法或者重新定義、追加屬性和方法等。可以使得子類別具有父類別的各種屬性和方法,而不需要再次編寫相同的代碼,可以有效復用代碼。但是Scala是單繼承,只能繼承一個父類。繼承類需要用到關鍵字extends。學生特長情況——理論基礎繼承的語法如下:class子類名extends父類名{類體}注意:子類繼承父類中非抽象的方法(即已經實現的方法)必須使用override修飾符。2、單例對象和伴生對象學生特長情況——理論基礎1)單例對象單例對象是一種特殊的類,有且只有一個實例。定義一個單例對象的語法如下:object單例對象名{}2)半生對象

若在同一個代碼文件內部,同時出現了classA和objectA,即類名和單例對象名完全相同,那么它們兩者就互為伴生關系。3、模式匹配學生特長情況——理論基礎

模式匹配(patternmatching)是Scala中十分強大的一個語言特性。模式匹配基本語法如下所示:xmatch{ casepattern1=>doSomething casepattern2=>doothers...}學生特長情況——編程分析實現

學生特長情況數據speciality.txt包括三個字段,分別是學生學號、姓名、特長類別。現要獲知某一類特長的學生情況,可以先定義一個object單例對象。在此對象中讀取數據文件,并轉換成數組。接著遍歷數組,搜索包括某類特長的學生數據并打印。思路分析:綜合案例——學生成績情況分析data.txt原始數據字段信息字段含義stuid學號name姓名sex性別grade年級class班級Chinese語文成績Math數學成績English英語成績

現要求使用Scala函數式編程,綜合本章前面所學知識,進行學生成績分析統計。獲得各門課程的平均成績和及格人數(大于60),每個同學所有課程的總成績。小結

本章詳細介紹Scala的一些基本知識、操作方法,包括函數、表達式、判斷與循環、數據結構、類和對象等。并完成了“班級基本情況分析”和“學生基本情況獲取”。THANKS!第4章房產大數據分析與探索某房產公司銷售人員業績分析第一部分數據集處理數據操作分析情境導入

員工業績考核分析是企業工作總結的重要組成部分。從業績分析中員工可以清楚的知道自己的工作應該達到何種標準,發現自己的工作長處和不足,激發工作的積極性。管理者可以清楚的了解員工的工作情況,通過分析不足,幫助員工改進、提高業績,促進企業的發展進步。假設現有某房產公司一個部門員工的某年銷售業績數據,請幫助部門經理對其進行統計分析,獲取相關信息。學習目標和要求1、掌握將數據構建為RDD的方法。2、能使用RDD的各種轉換和行動操作對數據集進行處理分析。3、會對處理完成的數據進行存儲操作。數據集處理

在Spark中最核心最基礎的概念是彈性分布式數據集(ResilientDistributedDatasets,RDD)。它是一種分布式的內存抽象,可以基于任何數據結構進行創建。

創建RDD的方法有兩種,一種是基于內存(集合)創建RDD,另一種是從外部數據集創建。1、基于內存(集合)創建RDD。

從集合中創建RDD,主要提供了兩個方法:使用SparkContext類中的parallelize和makeRDD兩個方法。數據集處理(1)parallelize方法創建RDD

此方法有兩個參數可以輸入,第一個參數用來接收一個集合。第二個參數是可選的,用于指定創建的RDD的分區數。(2)makeRDD方法創建RDDmakeRDD方法和parallelize方法類似,但它可以指定每個分區的首選位置。數據集處理2、從外部存儲數據構造RDD數據集處理

讀取一個放在文件系統中的數據進行創建RDD。從本地文件創建,主要用于測試;使用HDFS文件獲取外部數據集創建,實踐操作中最常用。通過調用SparkContext的textFile方法讀取數據集。調用命令如下:textFile("/my/directory")textFile("/my/directory/*.txt")textFile("/my/directory/*.gz")(1)加載HDFS上存儲的CSV文件構造一個RDD數據集處理

從HDFS中的數據創建RDD,首先需要定義文件在HDFS上存儲的路徑,然后根據路徑使用sc.textFile()方法進行創建。//定義HDFS上test.csv文件的存儲路徑valHDFSfile="/Chapter4/test.csv"

//使用textFile方法,加載文件并構造RDDvalHDFSrdd=sc.textFile(HDFSfile)

//查看返回值HDFSrdd.collect()(2)加載本地Linux中的文件構造一個RDD數據集處理

讀取本地Linux中的文件構造RDD也是通過sc.textFile("path")的方法,在path路徑前面加上“file:///”表示從本地文件系統讀取數據。3、操作練習——構建員工業績RDD數據集處理(1)上傳數據集到HDFS文件系統中。(2)從HDFS文件系統中讀取文件并創建RDD。數據操作分析1、RDD支持的兩種操作。(1)轉換操作:就是對RDD中的數據進行各種轉換。方法名稱作用map將RDD中的每一個數據元素通過func函數轉換,返回新的RDD。flatmap首先將map方法應用于RDD的所有元素,然后將結果扁平化拆分,返回一個新的RDD。sortby通過指定條件對RDD中的元素進行排序。filter通過指定條件對RDD中的元素進行過濾。distinct對RDD中的所有元素去重,返回一個去重后的RDD。union將兩個RDD進行合并,返回合并后的數據集。keys返回PairRDD中的“鍵”形成的新的RDD。values返回PairRDD中的“值”形成的新的RDD。reducebykey對“鍵”相同的值使用指定的函數進行聚合操作。groupbykey對“鍵”相同的值根據指定條件進行分組。sortbykey根據“鍵”對RDD內部的元素進行排序。join根據“鍵”對兩個RDD進行連接。數據操作分析(2)行動操作:RDD的行動操作則是向驅動器程序返回結果或者把結果寫入外部系統的操作,會觸發實際的計算方法名稱作用count返回RDD中元素的個數。take返回RDD中前n個元素值。first返回RDD中第一個元素值。collect返回RDD中所有元素的列表。top返回RDD中排名前n的元素值。數據操作分析2、統計部門人員人數。count()行動操作,返回的是RDD內元素的個數。舉例:利用序列Seq(1,2,3,4,5,6)創建的rdd中有6個數字元素操作練習:統計部門人員人數數據操作分析3、分別統計上/下半年業績排名,取前三位及最后三位利用map、flatmap、sortby、take,first、collect等方法對數據進行操作實現。(1)map轉換操作map轉換操作是最常用的轉換算子,對RDD中的每個元素都執行一個指定的函數來產生一個新的RDD。舉例:數據操作分析(2)flatmap轉換操作

此方法首先將map函數應用于RDD的所有元素,然后將返回的結果平坦化。舉例:對map轉換操作中的str1進行flatmap轉換操作。

對比map和flatMap操作的輸出結果圖,可以很容易的看出兩者的區別,因此flatMap操作通常用來切分單詞。數據操作分析(3)sortby轉換操作此方法是對RDD進行排序,有3個參數可以輸入。 sortby(參數一,參數二,參數三)參數一是要進行排序的對象值;參數二是排序方式,默認是正序排序,使用false參數就是倒序排序;參數三是分區個數。數據操作分析//加載一個RDD,命名為testvaltest=sc.parallelize(Array(("dog",3),("cat",1),("monkey",2),("pig",3),("bird",2)))//根據test中的第二位元素進行降序排序valtest_desc=test.sortBy(_._2,false)//查看結果test_desc.collect//根據test中的第二位元素進行升序排序valtest_asc=test.sortBy(_._2)//查看結果test_asc.collectsortby舉例:數據操作分析(4)take,first、collect行動操作take行動操作返回RDD的前n個元素值。first行動操作返回的是RDD中的第一個元素值。collect行動操作是以數組的形式將RDD中所有的元素返回。數據操作分析(5)進行分析,實現任務。1)按照前面的問題分析思路,首先對上半年和下半年的業績數據集firstrdd、secondrdd進行map轉換,將每行數據分割為4列。2)利用sortBy方法對map_firstrdd和map_secondrdd數據集中的業績列分別進行降序和升序排序,取出排名前三和后三的信息。對上半年業績列進行降序和升序排序: valsort_firstrdd=map_firstrdd.sortBy(x=>x._4,false) sort_firstrdd.take(3) valsort_firstrdd=map_firstrdd.sortBy(x=>x._4) sort_firstrdd.take(3)同理對下半年業績列進行降序和升序排序。數據操作分析4、統計上/下半年業績超過5000萬的人員。

要獲取這個問題的數據,首先需要分別過濾出上下半年業績超過5000萬的人員。但是有些人員只有上半年或者下半年符合要求,有些人員是上下半年都符合要求,因此還需要對過濾出來的人員信息進行去重。可以利用filter、distinct、union等方法對數據進行操作。(1)filter轉換操作此方法返回滿足指定過濾條件的元素,不滿足條件的元素被忽略。//讀取一個數字列表創建RDDvalrdd=sc.parallelize(List(1,3,6,2,8,8,5,6,7))//過濾出大于5的數字rdd.filter(x=>x>5).collect數據操作分析(2)distinct轉換操作

此方法是對RDD中的數據去重,把完全相同的元素去除。對前述filter轉換操作中的rdd數據進行操作。由輸出結果可見,原先列表中重復的數字6和8被去重了。數據操作分析(3)union轉換操作

此方法可以將兩個RDD進行合并,返回兩個RDD的并集,并且不去重。但是要求兩個RDD中每個元素中的值的個數及數據類型保持一致。//定義加載兩個RDD,命名為test1和test2valtest1=sc.parallelize(Array(("dog",3),("cat",1),("monkey",2)))valtest2=sc.parallelize(Array(("monkey",2),("pig",3),("bird",2)))//執行union操作合并兩個RDDtest1.union(test2).collect數據操作分析(4)進行分析,實現任務。1)利用filter方法過濾出業績大于5000萬的人員,最終返回人員編號信息。2)利用union方法,將上述過濾后的數據集filter_firstrdd和filter_secondrdd進行合并,并通過distinct方法去除重復的人員編號信息。數據操作分析5、統計此部門當年的房屋銷售套數。

要獲取這個問題的數據,只需取出數據表的第三列“房屋銷售套數”數據,然后利用求和函數進行求和。可以利用RDD的相關描述性統計函數實現。(1)min()、max()函數min()方法返回RDD中的最小值,max()方法返回RDD中的最大值。數據操作分析(2)mean()、sum()函數mean()函數返回RDD中的平均值。sum()函數返回RDD中的總和。舉例:求RDD數據集的平均值和總和。數據操作分析(3)variance()、stdev()函數variance()計算RDD中所有元素的總體方差。stdev()計算RDD的標準差。舉例:求RDD數據集的總體方差和樣本方差。數據操作分析(4)進行分析,實現任務。

將經過map操作處理好的上/下半年業績數據集map_firstrdd和map_secondrdd進行合并,取出第三列數據,利用sum函數計算總數。數據操作分析6、查看全年總業績最高人員。

此任務需要將每個人上、下半年的業績進行相加,然后取最高者。這個過程需要對人員編號相同的業績數據進行識別并相加。在RDD中可以通過鍵值對(Key-Value)的操作完成。Spark為包含鍵值對類型的RDD提供了一些專有的操作,這些RDD被稱為Pair

RDD。數據操作分析(1)創建PairRDD

創建PairRDD的方法有很多,當需要將一個普通RDD轉換為PairRDD時,可以使用map方法來實現。//定義一個RDDvalrdd=sc.parallelize(List("dog","cat","monkey","pig"))//創建鍵值對valpairrdd=rdd.map(word=>(word,1))(2)keys()、values()轉換操作keys()、values()操作返回的類型是RDD。//取pairrdd中的鍵pairrdd.keys.collect//取pairrdd中的值pairrdd.values.collect數據操作分析(3)reducebykey()轉換操作

此方法應用于鍵值對數據集操作,對Key相同的Value使用指定的函數進行聚合操作,返回一個鍵值對的數據集。reduceByKey((x,y)=>x+y),對PairRDD中鍵相同的值進行相加操作。數據操作分析(4)groupbykey()轉換操作

此方法會對相同鍵的值進行分組,形成二元元組,第一個字段為相同的鍵,第二個字段為具備相同鍵的值的集合。對前一個任務中的map_test數據集進行操作。 valgroup_test=map_test.groupByKey() group_test.collect數據操作分析(5)sortByKey()轉換操作此方法返回一個根據“鍵”進行排序的RDD。舉例:數據操作分析(6)進行分析,實現任務1)將上、下半年的的業績合并到同一個RDD中。valtotal=map_firstrdd.union(map_secondrdd)2)將數據轉換成(員工編號,業績)鍵值對,利用reduceByKey方法對相同員工編號對應的業績值進行相加。數據操作分析3)對業績總和進行排序,獲得最高業績人員信息。//利用sortBy方法對指定列進行排序 yeji.sortBy(x=>x._2,false) yeji.sortBy(x=>x._2,false).take(1)數據操作分析7、存儲以上統計分析信息

數據存儲的方式有多種,比如將數據存儲為JSON文件、CSV文件、文本文件等。文本文件的存儲可以直接調用saveAsTextFile(path)進行存儲。

對上、下半年的業績以及全年總業績數據進行join連接,再將結果數據以文本文件的形式存儲到HDFS中。操作練習:某城市近年房產銷售狀況分析第二部分數據準備數據探索與分析情境導入

房子是一個價格昂貴的“商品”,但也是每個人生活必不可少的一件“商品”。房子的價格、所處的位置、裝修情況等等因素都是購房者關心的主要問題。了解房產市場的變化規律以及各個因素對價格的影響,對于消費者來說是購房之前首先要做的功課。

現有一份來自某網站的某城市近年房產銷售數據集house-price.csv,包含成交時間、價格、裝修情況、區域等信息。學習目標和要求

能靈活綜合的應用各種RDD操作和各個算子對數據進行分析,解決以下問題: 1、每年房產銷售量趨勢如何? 2、此城市各區域房產銷量如何?均價如何? 3、在2018年1月1日的銷量有多少? 4、查詢2018年1月1日到1月31日之間,滿五年房產的銷售比例。 5、哪種裝修類型的房子銷量最高? 6、所售賣的房子中,電梯有無的比例,地鐵有無情況?數據準備

此房產銷售數據集是一個在系統外部的csv文件,因此需要將其上傳至文件系統中,加載為RDD后再做處理分析。1、利用MobaXterm工具,將house-price.csv文件上傳到本地Linux的/root/data/Chapter4文件夾內。2、啟動Hadoop和Spark集群,將/root/data/Chapter4目錄下的house-price.csv文件上傳到HDFS文件系統的/Chapter4目錄中。3、啟動spark-shell,加載數據到RDD。數據探索與分析

在進行數據探索分析之前,還需要將前面加載到RDD中的數據進行轉換,把每一條數據根據字段含義進行分割,以便后續數據處理分析。1、使用map方法轉換RDD,以“,”將每一行數據分割。數據探索與分析2、對戶人數的基本情況進行統計,獲得記錄條目的總數,以及在這些記錄中包括多少個用戶ID。//查看數據總條數m_houseprice.count//查看這些記錄中的用戶數m_houseprice.map(_(1)).distinct.count數據探索與分析3、了解房產銷量趨勢,統計每年房產銷售量情況。

要獲得每年的房產銷售量情況,需要先從日期中提取年份數據;然后利用reduceByKey方法按年進行統計匯總;最后利用sortBy方法對統計匯總的數據進行排序,獲得每年銷量從高到低的排序情況。數據探索與分析4、分析此數據集中購買房屋所屬的區域是哪些?各個區域的房產銷售情況如何?各個區域的房屋均價是多少?(1)購買房屋所屬的區域情況及數量

使用distinct方法去重就能獲得購買房屋所屬的各“區域”的情況。對于各個區域的銷售量,可以使用reduceByKey方法,對相同鍵(區域)的值進行相加獲得。(2)各個區域的房屋均價情況1)使用map取出“區域”、“區域均價”兩列數據,將“區域均價”轉換位Double類型數據,并對每個價格計數1,計數1的目的是為了之后統計Key的個數。2)對相同區域的“均價”值進行相加操作,再求平均。數據探索與分析5、查詢2018年1月1日的日銷量有多少。查詢某一天或某一條件下的數據,可以使用filter轉換操作。6、查詢2018年1月1日到1月31日之間,滿五年房產的銷售數量。使用filter操作,可以圈定某一條件范圍。數據探索與分析7、數據集中,房子的裝修類型有精裝、簡裝、毛坯、其他,四種類型,分析哪種裝修類型的房子銷量高。

此問題的分析思路與第4點統計區域房產銷售情況一致,可以使用reduceByKey(_+_)方法對裝修類型相同的房屋數量進行求和統計。8、了解在所售賣的房子中,電梯有無的比例,地鐵有無情況,這些條件對房屋售賣量的影響程度。

對電梯有無數據列創建鍵值對,其中“鍵”指有無電梯,每個“值”賦予“1”。然后使用groupByKey()方法對相同“鍵”的鍵值對進行分類,分類后對“值”進行sum求和。有無地鐵情況的數據處理思路相同。小結

本章介紹了Spark中彈性分布式數據集RDD的創建方法、利用RDD的各個算子對數據進行操作分析的方法。通過“房產大數據分析與探索”和“某城市近年房產銷售狀況分析”兩個案例,靈活綜合的應用各種RDD操作和各個算子對數據進行分析處理。THANKS!第5章電商大數據分析與探索女裝電子商務評論情況分析第一部分數據準備數據轉換數據分析數據輸出數據清洗情境導入

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

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

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

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

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

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

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

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

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

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

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

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

此方法用于將DataFrame中所有缺失值填充為一個給定的字符串或數值。可以為所有缺失值指定字符串或數值,也可以為指定列指定不同字符串或數值。將表中所有的null空數據指定為“不明”:數據清洗對不同的列中缺失值填充不同的字符串:5、對“Clothing-Reviews.csv”女裝電子商務評論數據集進行數據清洗,刪除重復的數據,對有空缺數據的行進行刪除。數據轉換

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

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

此方法用于對已經存在的列名進行重命名。existing為原來的名字,

溫馨提示

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

評論

0/150

提交評論