大數(shù)據(jù)技術(shù)spark基礎(chǔ)實驗指導(dǎo)書_第1頁
大數(shù)據(jù)技術(shù)spark基礎(chǔ)實驗指導(dǎo)書_第2頁
大數(shù)據(jù)技術(shù)spark基礎(chǔ)實驗指導(dǎo)書_第3頁
大數(shù)據(jù)技術(shù)spark基礎(chǔ)實驗指導(dǎo)書_第4頁
大數(shù)據(jù)技術(shù)spark基礎(chǔ)實驗指導(dǎo)書_第5頁
已閱讀5頁,還剩124頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

三盟Spark實驗指導(dǎo)三盟Spark實驗指導(dǎo)書三盟目錄Scala部署及基本語法 5安裝Scala 61.1進(jìn)入安裝目錄 6Scala基礎(chǔ) 72.1基礎(chǔ)語法 7實驗一三盟目錄Scala部署及基本語法 5安裝Scala 61.1進(jìn)入安裝目錄 6Scala基礎(chǔ) 72.1基礎(chǔ)語法 7實驗一結(jié)構(gòu) 11實驗二3.Scala數(shù)據(jù)結(jié)構(gòu) 13Scala數(shù)據(jù)結(jié)構(gòu) 3.4列表 14集合 14(Map) 15迭代器 17實驗三4.Scala類和對象 20類 214.1簡單的類 21對象 5.3單例對象 25伴生對象 25應(yīng)用程序?qū)ο?26實驗四6.Scala函數(shù)式編程WordCount 27實驗操作 296.1創(chuàng)建需要統(tǒng)計的目錄 29spark安裝部署 31實驗五1、檢查環(huán)境hadoop集群環(huán)境 312、Spark部署 323、啟動spark集群 43實驗六SparkRDD編程 451.RDD編程 46實驗七Spark單詞統(tǒng)計實驗 472、檢查hadoop集群環(huán)境 492、創(chuàng)建項目 50三盟創(chuàng)建javamaven項目 51更改JDK版本 54配置pom.xml文件 58創(chuàng)建SparkWordCount類 64打包項目三盟創(chuàng)建javamaven項目 51更改JDK版本 54配置pom.xml文件 58創(chuàng)建SparkWordCount類 64打包項目 704、5、jar程序 765.1運(yùn)行程序 76實驗八SparkHbase讀寫實驗 771、 檢查hadoop集群環(huán)境 792、 Hbase創(chuàng)建studen表 802.1進(jìn)入hbase環(huán)境 80創(chuàng)建......................................................................................................80表 812.4往表里數(shù)據(jù) 812.5使用scan命令查看表結(jié)構(gòu) 823、創(chuàng)建項目 83創(chuàng)建javamaven項目 84更改JDK版本 87配置pom.xml文件 914、5、6、創(chuàng)建Scalajar包 98Spark運(yùn)行打包jar文件 101java代碼和配置文件(附) 104實驗九Sparkstream實驗 109實驗準(zhǔn)備 110創(chuàng)建Scalajar包 111創(chuàng)建Scala項目 111把scala項目Maven管理 1113Sparkjar文件 114java代碼和配置文件(附) 116Stream類 116實驗十SparkSQL實驗 1191.實驗準(zhǔn)備 1205.創(chuàng)建Scalajar包 121三盟創(chuàng)建Scala項目 121把三盟創(chuàng)建Scala項目 121把scala項目Maven管理 1216Sparkjar文件 124java代碼和配置文件(附) 126SQL類 126三盟實驗一Scala【實驗名稱】Scala【實驗?zāi)康摹縎calaScala3.Scala三盟實驗一Scala【實驗名稱】Scala【實驗?zāi)康摹縎calaScala3.Scala【實驗要求】語句ScalaScala編寫程序?!緦嶒灜h(huán)境】1、1Centos6.82、實驗所需安裝包三盟【實驗步驟】1.安裝Scala1.1[root@localhost~]#cd/opt/hadoop-package/cpscala三盟【實驗步驟】1.安裝Scala1.1[root@localhost~]#cd/opt/hadoop-package/cpscala(scala-2.10.4.tgz)解壓到/opt[root@localhosthadoop-package]#tar-zxvfscala-2.10.4.tgz-C/opt/scala[root@localhost]#cd/opt[root@localhostopt]#mvscala-2.10.4/scala設(shè)置環(huán)境變量,并是環(huán)境變量生效[root@localhost]#vi/etc/profile在文件最后加上下面環(huán)境配置使環(huán)境生效[root@localhost]#source/etc/profile修改配置截圖:1.5scala測試scala[root@localhost]#scala安裝如下圖:三盟2.Scala值和變量Scalaval:是不可變的,在var:是可變的,時就必須被初始化,而且初始化以后就不能再賦值;的時候需要進(jìn)行初始化,初始化以后還可以再次對其賦值。例如:不可變的字符串scala>valmyStr三盟2.Scala值和變量Scalaval:是不可變的,在var:是可變的,時就必須被初始化,而且初始化以后就不能再賦值;的時候需要進(jìn)行初始化,初始化以后還可以再次對其賦值。例如:不可變的字符串scala>valmyStr="HelloWorld"scala>valmyStr2:String="HelloWorld"scala>valmyStr3:java.lang.String="HelloWorld"例如:可變的復(fù)數(shù)scala>varmyPrice:Double=9.9scala>myPrice =9.9三盟2.1.2ScalaChar、Short、Int、Long、Float、DoubleBooleanaaaasca三盟2.1.2ScalaChar、Short、Int、Long、Float、DoubleBooleanaaaascaaIntscala.Int。對于字符串,Scalajava.lang.String操作符:在Scala中,可以使用加(+)、減(-)、乘(*)、除(/)、余數(shù)(%)等操作符,而且,這些操作符就是。例如,53(5).+(3)是等價的,也就是說:ab 等價于a.bscala>varsum1=5+3等價于scala>varsum1=(5).+(3)三盟2.1.3Rangefor,i15,這時就可以采RangeRangeBigIntBigDecimal(1)155,1命令如下scala>1to5(2)15三盟2.1.3Rangefor,i15,這時就可以采RangeRangeBigIntBigDecimal(1)155,1命令如下scala>1to5(2)155,1scala>1until5(3)11010,2scala>1to10by2(4)Float0.5f5.9f0.3fscala>0.5fto5.9fby0.3f2.1.4臺輸入輸出語句為了從臺讀寫數(shù)據(jù),可以使用以為前綴的Long、,Char:Int、Boolean、Line,Byte、Short、Float、98以帶一個字符串參數(shù)的提示沒有參數(shù),Line三盟scala.io.StdIn用為了向臺輸出,常用的兩個函數(shù)是print()和println(),可以直接輸出字符串或者其它數(shù)據(jù)類型scala>println("231")ScalaCprintf()函數(shù)2.1.5讀寫文件1.寫入文件Scalajava.io.PrintWriter三盟scala.io.StdIn用為了向臺輸出,常用的兩個函數(shù)是print()和println(),可以直接輸出字符串或者其它數(shù)據(jù)類型scala>println("231")ScalaCprintf()函數(shù)2.1.5讀寫文件1.寫入文件Scalajava.io.PrintWriterscala>importjava.io.PrintWriterscala>valout=newPrintWriter("output.txt")scala>for(i<-1to5)out.println(i)scala>out. ()如果我們想把文件保存到一個指定的目錄下,就需要給出文件路徑scala>importjava.io.PrintWriter三盟scala>valout=newPrintWriter("/root/output.txt")scala>for(i<-1to三盟scala>valout=newPrintWriter("/root/output.txt")scala>for(i<-1to5)out.println(i)scala>out. ()2.文件Scala.io.SourcegetLines實現(xiàn)對文件中所有行的scala>importscala.io.Sourcescala>varinputFile=Source.fromFile("output.txt")scala>vallines=inputFile.getLinesfor(line<-lines)println(line)2.2結(jié)構(gòu)2.2.1ifscala>valx=6scala>if(x>0) 三盟 println("false") }2.2.2whilescala>三盟 println("false") }2.2.2whilescala>valx=6scala>while(x>0){x-=1printf("xis%d",x) }2.2.3forScalaforscala>for(i<-1to5)println(i)三盟實驗二Scala【實驗名稱】Scala【實驗?zāi)康摹縎cala熟悉掌握列表、集合、、迭代器、數(shù)組、元組等常見的數(shù)據(jù)類型?!緦嶒炓蟆吭趯嶒灲Y(jié)束時能熟悉掌握列表、集合、、迭代器、數(shù)組、元組等常見數(shù)據(jù)操作三盟實驗二Scala【實驗名稱】Scala【實驗?zāi)康摹縎cala熟悉掌握列表、集合、、迭代器、數(shù)組、元組等常見的數(shù)據(jù)類型。【實驗要求】在實驗結(jié)束時能熟悉掌握列表、集合、、迭代器、數(shù)組、元組等常見數(shù)據(jù)操作【實驗環(huán)境】1scalaCentos6.8三盟【實驗步驟】3.Scala3.1列表列表是一種共享相同類型的不可變的對象序列。既然是一個不可變的集合,Scala的List不同于Java的java.util.List,scala的List一旦被定義,其值就不能改變,因此時必須初始化scala>varstrList=List("BigData","Hadoop","Spark")Listheadtailhead來獲取tail的新列表,這體現(xiàn)出列表具有遞歸的鏈表結(jié)構(gòu)strList.head三盟【實驗步驟】3.Scala3.1列表列表是一種共享相同類型的不可變的對象序列。既然是一個不可變的集合,Scala的List不同于Java的java.util.List,scala的List一旦被定義,其值就不能改變,因此時必須初始化scala>varstrList=List("BigData","Hadoop","Spark")Listheadtailhead來獲取tail的新列表,這體現(xiàn)出列表具有遞歸的鏈表結(jié)構(gòu)strList.headigDat,strList.ailtadoop""Sark")3.2集合集合(st)是不重復(fù)元素的容器(n。列表中的元素是按照的先后順序來組織元素的順序,而是以“”對元素的值進(jìn)行組織,所以,它你快速地找到某個元素集合可變集和不可變集,分別位于變集3.2.1不可變集scala>varmySet=Set("Hadoop","Spark")scala>mySet+="Scala"三盟3.2.2可變集scala>importscala.collection.mutable.Setscala>valmyMutableSet=Set("Database","BigData")scala>myMutableSet+="CloudComputing"3.3(Map)以根據(jù)鍵來對值進(jìn)行快速的檢索采用了類繼承機(jī)制提供了可變的和不可變的兩種版本的在包scala.collection.mutable和scala.collection.immutable里。默認(rèn)情況下,Scala中使用不可變的。如果想使用可變,必須明確地導(dǎo)入scala.collection.mutable.Map3.3.1不可變Map三盟3.2.2可變集scala>importscala.collection.mutable.Setscala>valmyMutableSet=Set("Database","BigData")scala>myMutableSet+="CloudComputing"3.3(Map)以根據(jù)鍵來對值進(jìn)行快速的檢索采用了類繼承機(jī)制提供了可變的和不可變的兩種版本的在包scala.collection.mutable和scala.collection.immutable里。默認(rèn)情況下,Scala中使用不可變的。如果想使用可變,必須明確地導(dǎo)入scala.collection.mutable.Map3.3.1不可變Mapscala>valuniversity=Map("XMU"->"XiamenUniversity","THU"->"TsinghuaUniversity","PKU"->"PekingUniversity")如果要獲取中的值,可以通過鍵來獲取scala>println(university("XMU"))對于這種contains確定鍵是否scala>valxmu=if(university.contains("XMU"))university("XMU")else0scala>println(xmu)三盟不可變,是無法更新中的元素的,也無法增加新的元素。如果要更新的元素,就需要定義一個可變的3.3.2可變Mapscala>importscala.collection.mutable.Mapscala>valuniversity2=三盟不可變,是無法更新中的元素的,也無法增加新的元素。如果要更新的元素,就需要定義一個可變的3.3.2可變Mapscala>importscala.collection.mutable.Mapscala>valuniversity2=Map("XMU"->"Xia niversity","THU"->"TsinghuaUniversity","PKU"->"PekingUniversity")scala>println(university2("XMU"))也可以使用+=操作來添加新的元素scala>university2+=("TJU"->"TianJingUniversity")3.3.3循環(huán)遍歷scala>for((k,v)<-university2)printf(Codeis:%sandnameis:%s\n,k,v)三盟或者,也可以只遍歷kvscala>for(k<-university2.keys)println(k)scala>for(v<-university2.values)三盟或者,也可以只遍歷kvscala>for(k<-university2.keys)println(k)scala>for(v<-university2.values)println(v)3.4迭代器Scala(Iterator)不是一個集合,但是,提供了集合的法用于檢測是否還有下一個元素scala>valiter=Iterator("Hadoop","Spark","Scala")scala>while(iter.hasNext){println(iter.next())}1.5數(shù)組(Array)的數(shù)據(jù)結(jié)構(gòu)。ScalaArray[T]TScala類型,可以通過顯式指定類型或者通過隱式推斷來實例化一個數(shù)組。1.5.1普通數(shù)組三盟scala>varintValueArr=newArray[Int](3)scala>三盟scala>varintValueArr=newArray[Int](3)scala>intValueArr(0)=12scala>intValueArr(1)=45scala>intValueArr(2)=331.5.2函數(shù)ofDimArrayofDimscala>val myMatrix=Array.ofDim[Int](3,4)//類型實際就是Array[Array[Int]]scala> val myCube = Array.ofDim[String](3,2,4) //類型實際Array[Array[Array[Int]]]是可以使用多級圓括號來素數(shù)組的元素,例如myMatrix(0)(1)返回第一行第二列的元1.5.3定長數(shù)組采用Array類型定義的數(shù)組屬于定長數(shù)組,其數(shù)組長度在初始化后就不能改變。如果要定例如下:scala>import scala>valaMutableArr=ArrayBuffer(10,20,30)scala>aMutableArr+=40三盟scala>aMutableArr.insert(2,60,40)三盟scala>aMutableArr.insert(2,60,40)scala>aMutableArr-=40temp=aMutableArr.remove(2)1.6元組(Tuple)以包含不同類型的元素scala>valtuple=("hello",2015,44.7)scala>println(tuple._1)scala>println(tuple._2)scala>println(tuple._3)三盟實驗三Scala【實驗名稱】Scala【實驗?zāi)康摹?.2.3.三盟實驗三Scala【實驗名稱】Scala【實驗?zāi)康摹?.2.3.ScalaScala了解單例對象、伴生對象、應(yīng)用程序?qū)ο蟮奶卣骱蛥^(qū)別?!緦嶒炓蟆繉嶒灲Y(jié)束后學(xué)生能夠熟悉使用Scala文件的編譯和執(zhí)行,能夠熟悉使用類的屬性和方法,了解單例對象、伴生對象、應(yīng)用程序?qū)ο蟮奶卣骱蛥^(qū)別【實驗環(huán)境】1scalaCentos6.8三盟【實驗步驟】4.類4.1簡單的類最簡單的類的定義形式是:new給類增加字段和classCounter{private三盟【實驗步驟】4.類4.1簡單的類最簡單的類的定義形式是:new給類增加字段和classCounter{privatevarvalue=0defincrement():Unit={value+=1}defcurrent():Int={value}}創(chuàng)建對象classCounter{privatevarvalue=0defincrement():Unit={value+=1}defcurrent():Int={value}}下面我們新建對象,并調(diào)用其中的:valmyCounter=newCountermyCounter.increment()三盟Scala1.4編譯和執(zhí)行時,是可以省略名后面的圓括號的1.4.1編輯文件內(nèi)容viTestCounter.scala內(nèi)容如下class三盟Scala1.4編譯和執(zhí)行時,是可以省略名后面的圓括號的1.4.1編輯文件內(nèi)容viTestCounter.scala內(nèi)容如下classCounter{privatevarvalue=0defincrement():Unit={value+=1}defcurrent():Int={value}}valmyCounter=newCountermyCounter.increment()1.4.2在LinuxShellscala1.4.3輸出結(jié)果上面命令執(zhí)行后,會在屏幕輸出11.4.4JVMJVMscalac1.編輯文件內(nèi)容[root@hadoop1]#viTestCounterJVM.scala內(nèi)容如下classCounter{privatevarvalue=0defincrement():Unit={value+=1}defcurrent():Int={value}三盟}objectMyCounter{defmain(args:Array[String]){valmyCounter=newCounterMyCounter.increment()println(myCounter.current)}}2.scalac三盟}objectMyCounter{defmain(args:Array[String]){valmyCounter=newCounterMyCounter.increment()println(myCounter.current)}}2.scalacscala[root@hadoop1]#scalacTestCounterJVM.scala[root@hadoop1]#scala-classpath.MyCounter1.5gettersetter給類中的字段設(shè)置值以及Javagettersetter實現(xiàn)的Scalagettersetter的實現(xiàn),但是并沒有定義成get 和setvalue變成私有字段以后,Scala又沒有提供getter和setter,怎么可以valueScalagettersettervaluevalue_=,具體如下:,分別叫做1.5.1編輯文件內(nèi)容viTestCounterJVM.scala內(nèi)容如下objectMyCounter{defmain(args:Array[String]){ valmyCounter=newCounter() println(myCounter.value) myCounter.value=3三盟}}classCounter{privatevarprivateValue=三盟}}classCounter{privatevarprivateValue=0defvalue=privateValuedefvalue_=(newValue:Int){ if(newValue>0) =newValue}defincrement(temp:Int):Unit={value+=temp}defcurrent():Int={value}}1.5.2刪除之前生成的class[root@hadoop1]#rm-rfMyCounter*1.5.3使用scalac[root@hadoop1]#scalacTestCounterJVM.scala[root@hadoop1]#scala-classpath.MyCounter04。5.對象三盟5.1單例對象ScalaJavaJava同樣的功能。下面是單例對象的定義:privatevarlastId=0 defnew Id()={ lastId+=1 lastId }}println("1persionidis", .new Id())println("2persion三盟5.1單例對象ScalaJavaJava同樣的功能。下面是單例對象的定義:privatevarlastId=0 defnew Id()={ lastId+=1 lastId }}println("1persionidis", .new Id())println("2persionidis", .new println("3persionidis", .new 5.2伴生對象Java生對象來實現(xiàn)。和靜態(tài)Scala類和它的伴生對象必須一個文件中,而且可以相互私有成員(字段和。2.2.1test.scala在該文件中輸入如下代碼:class {privatevalid=.newId() privatevarname=""object{三盟 defthis(name:String){ this() =name } definfo(){printf("Theidof三盟 defthis(name:String){ this() =name } definfo(){printf("Theidof%sis%d.\n",name,id)}}object { privatevarlastId=0 //一個人的 編號 privatedefnew Id()={ lastId+=1 lastId } defmain(args:Array[String]){ val 1=new ("Ziyu") val 2=new ("Minxing") 1.info() 2.info() }}2.2.2編譯執(zhí)行[root@hadoop1]#scalactest.scala[root@hadoop1]#scalaPersion5.3應(yīng)用程序?qū)ο骃calamaintest.scala5.3.1test.scala[root@hadoop1]#rm-rftest.scala三盟[root@hadoop1]#vitest.scala文件中輸入如下代碼:objectHelloWorld{ defmain(args:Array[String]){三盟[root@hadoop1]#vitest.scala文件中輸入如下代碼:objectHelloWorld{ defmain(args:Array[String]){ println("Hello,World!") }}為了運(yùn)行上述代碼,我們現(xiàn)在可以使用兩種不同的。第法:直接使用scala命令scala5.3.2scala[root@hadoop1]#scalatest.scala5.3.3[root@hadoop1]#scalactest.scala[root@hadoop1]#scala-classpath.HelloWorld實驗四ScalaWordCount【實驗名稱】WordCount三盟【實驗?zāi)康摹繉η懊嬷R的消化理解。【實驗要求】Scala三盟【實驗?zāi)康摹繉η懊嬷R的消化理解。【實驗要求】Scala【實驗環(huán)境】1scalaCentos6.8三盟【實驗步驟】6.實驗操作6.1創(chuàng)建需要統(tǒng)計的目錄[root@hadoop1]#mkdirwordcount三盟【實驗步驟】6.實驗操作6.1創(chuàng)建需要統(tǒng)計的目錄[root@hadoop1]#mkdirwordcount1.2在目錄下分別創(chuàng)建word1.txtword2.txt[root@hadoop1]#viwordcount/word1.txt[root@hadoop1]#viwordcount/word2.txt你可以在文本文件中隨意輸入一些單詞,用空格隔開1.3新建一個testWordCount.scala[root@hadoop1]#vitestWordCount.scala內(nèi)容如下importjava.io.Fileimportscala.io.SourceobjectWordCount{defmain(args:Array[String]):Unit={ valdirfile=newFile("/root/wordcount") valfiles=dirfile.listFiles三盟 for(file<-files)println(file) val三盟 for(file<-files)println(file) vallistFiles=files.toList "). foreach( word=>{ if(wordsMap.contains(word)){ wordsMap(word)+=1 }else{ wordsMap+=(word->1) } } ) ) ) println(wordsMap) println(key+":"+value)}}1.4執(zhí)行Scala[root@hadoop1]#scalatestWordCount.scala執(zhí)行截圖:listFiles.foreach( 三盟實驗五spark【實驗名稱】spark【實驗?zāi)康摹縎park的SparkSparkSparkSpark三盟實驗五spark【實驗名稱】spark【實驗?zāi)康摹縎park的SparkSparkSparkSparkSparkSparkHDFS【實驗要求】Master,hadoop2、hadoop3WorkerSpark進(jìn)試。【實驗環(huán)境】【實驗步驟】1、檢查環(huán)境hadoop集群環(huán)境3hadoopjpshadoop3.1注意:如果hadoop沒有安裝完成請安裝第1課進(jìn)行安裝或執(zhí)行自動部署腳本三盟hadoop1jpshadoop2jpshadoop3三盟hadoop1jpshadoop2jpshadoop3jps2、Spark部署hadoop1三盟2.1安裝包的目錄在終端執(zhí)行命令:cd/opt/hadoop-package2.2spark三盟2.1安裝包的目錄在終端執(zhí)行命令:cd/opt/hadoop-package2.2spark/opt在終端執(zhí)行命令:tarzxvfspark-2.3.1-bin-hadoop2.7.gz-C/opt/解壓完成的截圖:三盟2.3scala/opt三盟2.3scala/opt在終端執(zhí)行命令:tarzxvfscala-2.11.8.tgz-C/opt/解壓完成的截圖:三盟2.4opt在終端執(zhí)行命令:cd/opt2.5三盟2.4opt在終端執(zhí)行命令:cd/opt2.5spark在終端執(zhí)行命令:mvspark-2.3.1-bin-hadoop2.7spark-scala在終端執(zhí)行命令:mvscala-2.11.8scala三盟2.7spark2.8spark-env.sh.templatespark-env.sh三盟2.7spark2.8spark-env.sh.templatespark-env.sh2.9spark-env.shexportSCALA_HOME=/opt/scalaexportHADOOP_HOME=/opt/hadoop-3.1.0exportHADOOP_CONF_DIR=/opt/hadoop-3.1.0/etc/hadoopexportSPARK_MASTER_IP=hadoop1exportSPARK_WORKER_CORES=2SPARK_WORKER_INSTANCES=1exportclasspath)三盟加入代碼后的截圖:2.10slaves.templateslaves在終端執(zhí)行命令:cpslaves.templateslaves2.11三盟加入代碼后的截圖:2.10slaves.templateslaves在終端執(zhí)行命令:cpslaves.templateslaves2.11slaves在終端執(zhí)行命令:vimslaves三盟localhost三盟localhostlocalhost三盟刪除完成后再該文件的最后面加入下面兩行代碼:hadoop2hadoop3加入代碼后的截圖:2.12同步三盟刪除完成后再該文件的最后面加入下面兩行代碼:hadoop2hadoop3加入代碼后的截圖:2.12同步spark、scala文件到hadoop2hadoop3scalahadoop2在終端執(zhí)行命令:scp-ropt/scalaroot@hadoop2:/opt同步完成的截圖:三盟scalahadoop3在終端執(zhí)行命令:scp三盟scalahadoop3在終端執(zhí)行命令:scp-ropt/scalaroot@hadoop3:/opt同步完成的截圖:三盟sparkhadoop2在終端執(zhí)行命令:scp三盟sparkhadoop2在終端執(zhí)行命令:scp-ropt/spark-2.3.1/root@hadoop2:/opt同步完成的截圖:三盟sparkhadoop3在終端執(zhí)行命令:scp三盟sparkhadoop3在終端執(zhí)行命令:scp-ropt/spark-2.3.1/root@hadoop3:/opt同步完成的截圖:三盟3spark集群3.1啟動三盟3spark集群3.1啟動sparkhadoop1三盟啟動截圖:三盟啟動截圖:三盟實驗六SparkRDD【實驗名稱】Spark三盟實驗六SparkRDD【實驗名稱】SparkRDD【實驗?zāi)康摹縍DDRDDRDDScala【實驗要求】max、first、distinct、foreachapi【實驗環(huán)境】Centos6.8Jdk1.8+scalaspark三盟【實驗步驟】1.RDD1.1RDD1.1.1進(jìn)入到sparkbin三盟【實驗步驟】1.RDD1.1RDD1.1.1進(jìn)入到sparkbin[root@hadoop1]#cd/opt/spark-2.3.1/bin/1.1.2切換回spark-shell[root@hadoop1bin]#spark-shell1.1.3通過scRDD本地:scala>vallines=sc.textFile("file:///root/wordcount.txt")Hdfs:scala>vallines=sc.textFile("hdfs://hadoop1:9000/user/root/wordcount.txt")scala>vallines=sc.textFile("/user/root/wordcount.txt")scala>vallines=sc.textFile("wordcount.txt")hdfs三盟1.2wordcount文字統(tǒng)計scala>vallines=sc.textFile("file:///root/wordcount.txt")scala>lines.flatMap(_.split("")).map((_,完成如圖:1.3RDD其它操作scala>三盟1.2wordcount文字統(tǒng)計scala>vallines=sc.textFile("file:///root/wordcount.txt")scala>lines.flatMap(_.split("")).map((_,完成如圖:1.3RDD其它操作scala>lines.count()實驗七Spark單詞統(tǒng)計實驗【實驗名稱】scala>lines.first()三盟Spark【實驗?zāi)康摹縎cala三盟Spark【實驗?zāi)康摹縎calaSparkSparkWordCount【實驗要求】ScalaSparkSparkWordCount,然后能夠spark-shell【實驗環(huán)境】三盟【實驗步驟】2hadoop集群環(huán)境3hadoop三盟【實驗步驟】2hadoop集群環(huán)境3hadoopjpshadoop注意hadoop1op3.13.1注意hadoop1hadoop1jpshadoop2jpshadoop3jps三盟2、創(chuàng)建項目hadoop1eclipse三盟2、創(chuàng)建項目hadoop1eclipse三盟2.1javamaven項目三盟2.1javamaven項目FileNewOther三盟在彈出的頁面中按下圖步驟操作三盟在彈出的頁面中按下圖步驟操作三盟三盟三盟2.2JDK版本三盟2.2JDK版本Properties三盟三盟三盟三盟三盟三盟三盟2.3pom.xml文件在創(chuàng)建pom.xml三盟2.3pom.xml文件在創(chuàng)建pom.xmlpom.xml三盟在打開的pom.xml文件中在28行附近找到</dependency>,然后在這一行的最前面回車換行三盟在打開的pom.xml文件中在28行附近找到</dependency>,然后在這一行的最前面回車換行換好行的截圖:三盟打開桌面的【b8.3三盟打開桌面的【b8.3Spark打開【8.3Spark.docx】文件三盟三盟pom.xml的代碼三盟eclipsepom.xml三盟eclipsepom.xml三盟黏貼截圖:三盟黏貼截圖:三盟保存2.4SparkWordCount三盟保存2.4SparkWordCount類SparkWordCount-testsrc/main/java右擊創(chuàng)建類三盟三盟三盟刪除里面的內(nèi)容三盟刪除里面的內(nèi)容三盟刪除后的截圖:打開桌面的【b8.3Spark三盟刪除后的截圖:打開桌面的【b8.3Spark打開【8.3Spark.docx】文件三盟三盟束中間的代碼三盟三盟三盟保存4、打包項目三盟保存4、打包項目Export三盟JARfile三盟JARfileNext三盟Next三盟Next三盟三盟三盟class,OK三盟class,OK然后Finish三盟OKOK三盟OKOK三盟5、運(yùn)行打包jar程序5.1運(yùn)行程序hadoo1sparkbin三盟5、運(yùn)行打包jar程序5.1運(yùn)行程序hadoo1sparkbin運(yùn)行程序在終端執(zhí)行命令:spark-submit--classfile:///root/wordcount.txt執(zhí)行如圖:三盟至此,本實驗結(jié)束實驗八SparkHbase讀寫實驗【實驗名稱】SparkHbase【實驗?zāi)康摹咳酥链耍緦嶒灲Y(jié)束實驗八SparkHbase讀寫實驗【實驗名稱】SparkHbase【實驗?zāi)康摹縎parkSparkHbase【實驗要求】要求實驗結(jié)束時,每個學(xué)生能夠正確運(yùn)行本實驗所寫的jar包程序,并能夠熟悉掌握SparkHbase【實驗環(huán)境】1hadoop2hbase三盟3spark三盟3spark三盟【實驗步驟】1、hadoop集群環(huán)境3三盟【實驗步驟】1、hadoop集群環(huán)境3hadoopjpshadoop注意hadoop1op3.13.1注意hadoop1hadoop1jpshadoop2jpshadoop3jps三盟、表hadoop12.1三盟、表hadoop12.1hbase環(huán)境在終端執(zhí)行命令:hbaseshell2.2查看表是否hbase(main):007:0>list三盟2.3創(chuàng)建表hbase(main):007:0>create'hbase(main):007:0>describe'','info''2.4往表里數(shù)據(jù)//首先錄入表的第一個學(xué)生hbase(main):007:0>三盟2.3創(chuàng)建表hbase(main):007:0>create'hbase(main):007:0>describe'','info''2.4往表里數(shù)據(jù)//首先錄入表的第一個學(xué)生hbase(main):007:0>put'hbase(main):007:0>put'hbase(main):007:0>put'','1','info:name','Xueqian'','1','info:gender','F'','1','info:age','23'三盟//然后錄入hbase(main):007:0>put'hbase(main):007:0>put'hbase(main):007:0>put三盟//然后錄入hbase(main):007:0>put'hbase(main):007:0>put'hbase(main):007:0>put'','2','info:gender','M'','2','info:age','24'2.5scan命令查看表結(jié)構(gòu)hbase(main):007:0>scan'這樣我們就往表里增加了兩條'三盟3、創(chuàng)建項目hadoop1eclipse三盟3、創(chuàng)建項目hadoop1eclipse三盟3.1javamaven項目三盟3.1javamaven項目FileNewOther三盟在彈出的頁面中按下圖步驟操作三盟在彈出的頁面中按下圖步驟操作三盟三盟三盟3.2JDK版本三盟3.2JDK版本Properties三盟三盟三盟三盟三盟三盟三盟3.3pom.xml文件在創(chuàng)建pom.xml三盟3.3pom.xml文件在創(chuàng)建pom.xmlpom.xml三盟在打開的pom.xml文件中在28行附近找到</dependency>,然后在這一行的最前面回車換行三盟在打開的pom.xml文件中在28行附近找到</dependency>,然后在這一行的最前面回車換行換好行的截圖:三盟打開桌面的【b8.3三盟打開桌面的【b8.3Spark打開【8.3Spark.docx】文件三盟三盟pom.xml的代碼三盟eclipsepom.xml三盟eclipsepom.xml三盟黏貼截圖:三盟黏貼截圖:三盟保存三盟保存三盟4ScalajarScala三盟4ScalajarScala項目file >>New >>ScalaProject把scala項目Maven管理右鍵項目>>Configure >>ConverttoMavenProject2.3配置pom.xml文件加載jar包三盟2.4創(chuàng)建ScalaObject實例2.5創(chuàng)建三盟2.4創(chuàng)建ScalaObject實例2.5創(chuàng)建Hbase2.6設(shè)置表名和創(chuàng)建APIHadoopRDD連接三盟2.7循環(huán)表的字段2.8修改JavaBuildPathBuildPathIncluded改為**/*.*三盟2.7循環(huán)表的字段2.8修改JavaBuildPathBuildPathIncluded改為**/*.*main語言否則編java語言編譯2.9Maven打包右鍵項目 >>>Runas>>>Mavenclean右鍵項目 >>>Runas>>>Maveninstall下如圖target下出現(xiàn)jar包三盟5、Spark運(yùn)行打包jar3.1將打包jar上傳到linux3.1.1linuxConnect三盟5、Spark運(yùn)行打包jar3.1將打包jar上傳到linux3.1.1linuxConnectSFTPSessionsftp3.1.2jarsftp三盟3.1.3然后進(jìn)入到sparkbin[root@hadoop1]#cd/opt/spark-2.3.1/bin/3.1.4使用spark-submit三盟3.1.3然后進(jìn)入到sparkbin[root@hadoop1]#cd/opt/spark-2.3.1/bin/3.1.4使用spark-submitspark:[root@hadoop1 bin]# spark-submit --master local --classwordcount.SparkOperateHBase/root/WordCountScala-0.0.1-SNAPSHOT.jar寫入:[root@hadoop1 bin]# spark-submit --master local --classwordcount.SparkWriteHBase/root/WordCountScala-0.0.1-SNAPSHOT.jar--class是你的類的具體地址默認(rèn)是hdfsmaster默認(rèn)是本地如下圖三盟寫入如下圖:查看可以通過8088端口去看到剛剛的操作三盟寫入如下圖:查看可以通過8088端口去看到剛剛的操作三盟至此,本實驗結(jié)束6、java代碼和配置文件(附)Hbase類4.1packagewordcountimportorg.apache.hadoop.conf.Configurationimportorg.apache.hadoop.hbase._importorg.apache.hadoop.hbase.._importorg.apache.hadoop.hbase.mapreduce.TableInputFormatimportorg.apache.hadoop.hbase.util.Bytesimportorg.apache.spark.SparkContextimportorg.apache.spark.SparkContext._importorg.apache.spark.SparkConfobjectSparkOperateHBase三盟至此,本實驗結(jié)束6、java代碼和配置文件(附)Hbase類4.1packagewordcountimportorg.apache.hadoop.conf.Configurationimportorg.apache.hadoop.hbase._importorg.apache.hadoop.hbase.._importorg.apache.hadoop.hbase.mapreduce.TableInputFormatimportorg.apache.hadoop.hbase.util.Bytesimportorg.apache.spark.SparkContextimportorg.apache.spark.SparkContext._importorg.apache.spark.SparkConfobjectSparkOperateHBase{defmain(args:Array[String]){三盟valconf=HBaseConfiguration.create()/*conf.set("hbase.zookeeper.quorum","hadoop1")conf.set("perty.Port","2181")*/valsc=newSparkContext(newSparkConf())//設(shè)置的表名conf.set(TableInputFormat.INPUT_TABLE,"1")valstuRDD=sc.newAPIHadoopRDD(conf,classOf[TableInputFormat],classOf[org.apache.hadoop.hbase.io.ImmutableBytesWritable],classOf[org.apache.hadoop.hbase..Result])stuRDD.cache()val三盟valconf=HBaseConfiguration.create()/*conf.set("hbase.zookeeper.quorum","hadoop1")conf.set("perty.Port","2181")*/valsc=newSparkContext(newSparkConf())//設(shè)置的表名conf.set(TableInputFormat.INPUT_TABLE,"1")valstuRDD=sc.newAPIHadoopRDD(conf,classOf[TableInputFormat],classOf[org.apache.hadoop.hbase.io.ImmutableBytesWritable],classOf[org.apache.hadoop.hbase..Result])stuRDD.cache()valcount=stuRDD.count()println("sRDDCount:"+count)//遍歷輸出stuRDD.foreach({case(_,result)=>valkey=Bytes.toString(result.getRow)valname=Bytes.toString(result.getValue("info".getBytes,"name".getBytes))valgender=Bytes.toString(result.getValue("info".getBytes,"gender".getBytes))valage=Bytes.toString(result.getValue("info".getBytes,"age".getBytes))println("***")println("Rowkey:"+key+"Name:"+name+"Gender:"+gender+"Age:"+age)println("***")})三盟}}4.2寫入Hbase類packagewordcountimportorg.apache.hadoop.hbase.HBaseConfigurationimportorg.apache.hadoop.hbase.mapreduce.TableOutputFormatimportorg.apache.spark._importorg.apache.hadoop.mapreduce.Jobimportorg.apache.hadoop.hbase.io.ImmutableBytesWritableimportorg.apache.hadoop.hbase..Resultimportorg.apache.hadoop.hbase..Putimportorg.apache.hadoop.hbase.util.BytesobjectSparkWriteHBase{defmain(args:Array[String]):Unit={valsparkConf=newSparkConf().setAppName("SparkWriteHBase").setMaster("local")valsc三盟}}4.2寫入Hbase類packagewordcountimportorg.apache.hadoop.hbase.HBaseConfigurationimportorg.apache.hadoop.hbase.mapreduce.TableOutputFormatimportorg.apache.spark._importorg.apache.hadoop.mapreduce.Jobimportorg.apache.hadoop.hbase.io.ImmutableBytesWritableimportorg.apache.hadoop.hbase..Resultimportorg.apache.hadoop.hbase..Putimportorg.apache.hadoop.hbase.util.BytesobjectSparkWriteHBase{defmain(args:Array[String]):Unit={valsparkConf=newSparkConf().setAppName("SparkWriteHBase").setMaster("local")valsc=newSparkContext(sparkConf)valtablename=""sc.hadoopConfiguration.set(TableOutputFormat.OUTPUT_TABLE,tablename)valjob=newJob(sc.hadoopConfiguration)job.setOutputKeyClass(classOf[ImmutableBytesWritable])job.setOutputValueClass(classOf[Result])job.setOutputFormatClass(classOf[TableOutputFormat[ImmutableBytesWritable]])=sc.makeRDD(Array("3,Rongcheng,M,26","4,Guanhua,M,27"))//構(gòu)建兩行valrdd=indataRDD.map(.split(',')).map{arr=>{valputnewPut(Bytes.toBytes(arr(0//行健的值三盟put.add(Bytes.toBytes("info"),Bytes.toBytes("name"),Bytes.toBytes(arr(1)))列的值put.add(Bytes.toBytes("info"),Bytes.toBytes("gender"),Bytes.toBytes(arr(2)))列的值put.add三盟put.add(Bytes.toBytes("info"),Bytes.toBytes("name"),Bytes.toBytes(arr(1)))列的值put.add(Bytes.toBytes("info"),Bytes.toBytes("gender"),Bytes.toBytes(arr(2)))列的值put.add(Bytes.toBytes("info"),Bytes.toBytes("age"),Bytes.toBytes(arr(3)))//info:age列的值(newImmutableBytesWritable,put)}}rdd.saveAsNewAPIHadoopDataset(job.getConfiguration())}}4.3pom.xml配置文件<properties><jdk.version>1.8</jdk.version><logback.version>1.1.2</logback.version><slf4j.version>1.7.7</slf4j.version><junit.version>4.11</junit.version><spark.version>2.1.0</spark.version><hadoop.version>2.6.5</hadoop.version><hbase.version>1.2.6</hbase.version></properties><dependencies><dependency><groupId>org.apache.spark</groupId><artifactId>spark-core_2.10</artifactId><version>2.1.0</version></dependency>三盟<dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-</artifactId><version>2.6.5</version></dependency><dependency><groupId>org.apache.hadoop</三盟<dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-</artifactId><version>2.6.5</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>2.6.5</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-hdfs</artifactId><version>2.6.5</version></dependency><dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-</artifactId><version>1.2.6</version></dependency><dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-server</artifactId><version>1.2.6</version></dependency><dependency><groupId>org.apache.hbase</groupId><artifactId>hbase</artifactId><version>1.2.6</version><type>pom</type>三盟</dependency></dependencies>實驗九Sparkstream【實驗名稱】Spark三盟</dependency></dependencies>實驗九Sparkstream【實驗名稱】Sparkstream【實驗?zāi)康摹繀^(qū)別版本的WordCountMapReduce版本的WordCount【實驗要求】詞數(shù)目。【實驗環(huán)境】Centos6.8Jdk1.8+安裝好spark三盟【實驗步驟】1.實驗準(zhǔn)備1.1HDFS三盟【實驗步驟】1.實驗準(zhǔn)備1.1HDFS命令如下:[root@hadoop1]#hdfsdfs-mkdir/input三盟2.創(chuàng)建Scalajar2.1 創(chuàng)建Scalafile>>New>>Scala三盟2.創(chuàng)建Scalajar2.1 創(chuàng)建Scalafile>>New>>ScalaProject2.2把scalaMaven右鍵項目>>Configure >>ConverttoMavenProject2.3配置pom.xmljar三盟2.4ScalaObject2.5Stream2.6流文件計算三盟2.4ScalaObject2.5Stream2.6流文件計算三盟2.7啟動stream2.8修改JavaBuildPathBuildPath中的Included三盟2.7啟動stream2.8修改JavaBuildPathBuildPath中的Included改為**/*.*main的時候出現(xiàn)Runas出現(xiàn)scalaApplication,則表示scalajava2.9Maven打包右鍵項目 >>>Runas>>>Mavenclean右鍵項目 >>>Runas>>>Maveninstall下如圖targetjar三盟3.Sparkjar3.1將打包jarlinux3.1.1linuxConnect三盟3.Sparkjar3.1將打包jarlinux3.1.1linuxConnectSFTPSessionsftp3.1.2jarsftp三盟3.1.3然后進(jìn)入到sparkbin[root@hadoop1]#cd/opt/spark-2.3.1/bin/3.1.4使用spark-submit三盟3.1.3然后進(jìn)入到sparkbin[root@hadoop1]#cd/opt/spark-2.3.1/bin/3.1.4使用spark-submitspark[root@hadoop1 bin]# spark-submit --master local --class/input--class是你的類的具體地址默認(rèn)是hdfsmaster3.1.5hdfsinput[root@hadoop1]#hdfsdfs-put/root/wordcount.txt/input[root@hadoop1]#hdfsdfs-put/root/people.txt/input如下圖三盟2020文件流至此,本實驗結(jié)束4.java(附)4.1 Streampackagewordcountimportorg.apache.spark.SparkConfimport三盟2020文件流至此,本實驗結(jié)束4.java(附)4.1 Streampackagewordcountimportorg.apache.spark.SparkConfimportorg.apache.spark.streaimportorg.apache.spark.strea.Strea.SecondsContextimportorg.apache.spark.storage.StorageLevelobjectHdfsWordCount{defmain(args:Array[String]){if(args.length<1){HdfsWordCount<hdfsdir>")System.exit(1)}三盟//Createthecontextwitha5second三盟//Createthecontextwitha5secondbatchsizevalsparkConf=newSparkConf().setAppName("HdfsWordCount")valssc=newStreaSeconds(20))vallines=ssc.textFileStream(args(0))valwordCounts=lines.flatMap(_.split("")).map((_,1)).reduceByKey(_+_)wordCounts.print()ssc.start()ssc.awaitTermination()}}4.2pom.xml<properties><jdk.version>1.8</jdk.version><logback.version>1.1.2</logback.version><slf4j.version>1.7.7</slf4j.version><junit.version>4.11</junit.version><spark.version>2.1.0</spark.version><hadoop.version>2.6.5</hadoop.version><hbase.version>1.2.6</hbase.version></properties><dependencies><dependency><groupId>org.apache.spark</groupId><artifactId>spark-core_2.10</artifactId><version>${spark.version}</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-</artifactId><version>${hadoop.version}</version></dependency>三盟<dependency><groupId>org.apache.hadoop</groupId三盟<dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>${hadoop.version}</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-hdfs</artifactId><version>${hadoop.version}</version></dependency><dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-</artifactId><version>${hbase.version}</version></dependency><dependency><artifactId>hbase-server</artifactId><version>${hbase.version}</version></dependency><dependency><artifactId>hbase</artifactId><version>${hbase.version}</version><type>pom</type></dependency></dependencies>三盟實驗十SparkSQL【實驗名稱】Spark三盟實驗十SparkSQL【實驗名稱】SparkSQL【實驗?zāi)康摹縎parkSQLSparkSQLSQL【實驗要求】在實驗結(jié)束后建立數(shù)據(jù)庫,創(chuàng)建數(shù)據(jù)表的數(shù)據(jù)結(jié)構(gòu)SparkSQLSQLSparkSQL【實驗環(huán)境】Centos6.8Jdk1.8+安裝好spark三盟【實驗步驟】1.實驗準(zhǔn)備1.1創(chuàng)建people.tx

溫馨提示

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

最新文檔

評論

0/150

提交評論