




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、林子雨老師 2017 年 2 月 20 日1249【】博客內(nèi)容由廈門(mén)大學(xué)數(shù)據(jù)庫(kù)擁有,!返回 Spark首頁(yè)Spark 處理的數(shù)據(jù)有很多是存放在HBase 數(shù)據(jù)庫(kù)中的,所以,需要學(xué)會(huì)如何讀寫(xiě)HBase 數(shù)據(jù)庫(kù)。HBase 是針對(duì)谷歌 BigTable 的開(kāi)源實(shí)現(xiàn),是一個(gè)靠、高性能、面向列、可伸縮的分布式數(shù)據(jù)庫(kù),主要用來(lái)非結(jié)構(gòu)化和半結(jié)構(gòu)化的松散數(shù)據(jù)。HBase 可以支持超大規(guī)模數(shù)據(jù),它可以通過(guò)水平擴(kuò)展的方式,利用廉價(jià)計(jì)算機(jī)集群處理由超過(guò) 10 億行數(shù)據(jù)和數(shù)百萬(wàn)列元素組成的數(shù)據(jù)表。如果要了解HBase 的技術(shù)原理和使用方法,可以參考廈門(mén)大學(xué)數(shù)據(jù)庫(kù)的課程HBase 數(shù)據(jù)庫(kù)。準(zhǔn)備工作一:創(chuàng)建一個(gè) HBa
2、se 表Spark2.1.0 入門(mén):讀寫(xiě) HBase 數(shù)據(jù)這里依然是以student 表為例進(jìn)行演示。這里假設(shè)你已經(jīng)成功安裝了HBase 數(shù)據(jù)庫(kù),如果你還沒(méi)有安裝,可以參考廈門(mén)大學(xué)數(shù)據(jù)庫(kù) HBase 安裝和使用,進(jìn)行安裝,安裝好以后,不要?jiǎng)?chuàng)建數(shù)據(jù)庫(kù)和表,只要跟著本節(jié)后面的內(nèi)容操作即可。HBase 安裝時(shí)有三種模式:?jiǎn)螜C(jī)模式、偽分布式模式和分布式模式。本采用偽分布式安裝。安裝好了偽分布式模式的HBase 以后,可以在里面創(chuàng)建一個(gè)student 表。 Linux 系統(tǒng),打開(kāi)一個(gè)終端(可以使用快捷方式Ctrl+Alt+T 組合鍵打開(kāi)終端),因?yàn)镠Base 是偽分布式模式,需要調(diào)用HDFS,所以,請(qǐng)首
3、先在終端中輸入下面命令啟動(dòng)Hadoop:1.cd /usr/local/hadoop2./sbin/start-all.sh1.jps2375 SecondaryNameNode2169 DataNode2667 NodeManager2972 Jps運(yùn)行jps 命令以后,應(yīng)該可以看到以下幾個(gè)進(jìn)程:?jiǎn)?dòng)完成以后,一定要輸入jps 命令查看是否啟動(dòng)成功:如果少了其中一個(gè)進(jìn)程,說(shuō)明啟動(dòng)失敗。下面就可以啟動(dòng)HBase,命令如下:1.cd /usr/local/hbase2./bin/start-hbase.sh /啟動(dòng)HBase3./bin/hbase s /啟動(dòng)hbase s這樣就可以進(jìn)入hbas
4、e s 命令提示符狀態(tài)。下面在HBase 數(shù)據(jù)庫(kù)中創(chuàng)建student 表(注意:在關(guān)系型數(shù)據(jù)庫(kù) 中,需要首先創(chuàng)建數(shù)據(jù)庫(kù),然后再創(chuàng)建表,但是,在HBase 數(shù)據(jù)庫(kù)中,不需要?jiǎng)?chuàng)建數(shù)據(jù)庫(kù),只要直接創(chuàng)建表就可以):1. hbase list 用list 命令可以顯示當(dāng)前HBase 數(shù)據(jù)庫(kù)中有哪些已經(jīng)創(chuàng)建好的表,如果里面已經(jīng)有一個(gè)名稱(chēng)為student 的表,請(qǐng)使用如下命令刪除(如果不存在student 表,就不用執(zhí)行下面的刪除命令了):1. hbase disable studenthttp:/blog/1316-2/javascript:void(0);http:/blog/1316-2/javasc
5、ript:void(0);http:/blog/1316-2/javascript:void(0);http:/blog/1316-2/javascript:void(0);2045 NameNode2541 ResourceManager2. hbase drop studenthttp:/avascript:void(0);/blog/1316-2/javascript:void(0);http:/blog/1316-2/j下面讓一起來(lái)創(chuàng)建一個(gè)student 表,要在這個(gè)表中錄入如下數(shù)據(jù):可以在hbase s中使用下面命令創(chuàng)建:1. hbasecreate student,infohttp
6、:/avascript:void(0);/blog/1316-2/javascript:void(0);http:/blog/1316-2/j你可以發(fā)現(xiàn),在創(chuàng)建student 表的 create 命令中,命令后面首先跟上表名稱(chēng)student,然后,再跟上列族名稱(chēng)info,這個(gè)列族info中包含三個(gè)列name,gender,age。你會(huì)發(fā)現(xiàn),好像沒(méi)有id字段,這是因?yàn)镠Base 的表中會(huì)有一個(gè)系統(tǒng)默認(rèn)的屬性作為行鍵,無(wú)需自行創(chuàng)建,默認(rèn)把 put 命令操作中跟+| id| name| gender | age|+|1 | Xueqian| F|23 |2 | Weiliang | M|24 |+在
7、表名后的第一個(gè)字段作為行健。創(chuàng)建完“student”表后,可通過(guò)describe 命令查看“student”表的基本信息:1. hbase describe student下面,要把student 表的兩個(gè)樣例輸入到student 表中。但是,HBase是列族數(shù)據(jù)庫(kù),原理和關(guān)系數(shù)據(jù)庫(kù)不同,操作方法也不同。如果要了解HBase的技術(shù)原理和使用方法,可以參考廈門(mén)大學(xué)數(shù)據(jù)庫(kù)的課程HBase數(shù)據(jù)庫(kù)。如果沒(méi)有時(shí)間學(xué)習(xí)HBase 數(shù)據(jù)庫(kù)細(xì)節(jié)知識(shí),也可以直接按照下面的內(nèi)容跟著操作就可以了。HBase 中用put 命令添加數(shù)據(jù),注意:一次只能為一個(gè)表的一行數(shù)據(jù)的一個(gè)列(也就是一個(gè)單元格,單元格是HBase 中
8、的概念)添加一個(gè)數(shù)據(jù),所以直接用s 命令數(shù)據(jù)效率很低,在實(shí)際應(yīng)用中,一般都是利用編程操作數(shù)據(jù)。因?yàn)檫@里只要兩條學(xué)生,所以,可以用 s命令手工。/首先錄入student 表的第一個(gè)學(xué)生1.2.hbase put student,1,info:name,Xueqian3.hbase put student,1,info:gender,F4.hbase put student,1,info:age,23/然后錄入student 表的第二個(gè)學(xué)生5.6.hbase put student,2,info:name,Weilianghttp:/blog/1316-2/javascript:void(0);h
9、ttp:/blog/1316-2/javascript:void(0);7. hbase put student,2,info:gender,M8. hbase put student,2,info:age,24數(shù)據(jù)錄入結(jié)束后,可以用下面命令查看剛才已經(jīng)錄入的數(shù)據(jù):1./如果每次只查看一行,就用下面命令2.hbase get student,1/如果每次查看全部數(shù)據(jù),就用下面命令3.4.hbase scan student可以得到如下結(jié)果:ROWCOLUMN+CELL1column=info:age, timest=1479640712163, value=23http:/blog/1316-
10、2/javascript:void(0);http:/blog/1316-2/javascript:void(0);http:/blog/1316-2/javascript:void(0);http:/blog/1316-2/javascript:void(0);準(zhǔn)備工作二:配置Spark1column=info:gender, timestamp=1479640704522, value=Fcolumn=info:name, timest=1479640696132, value=Xueqiancolumn=info:age, timest=1479640752474, value=242c
11、olumn=info:gender, timestamp=1479640745276, value=M2column=info:name, timest=1479640732763, value=Weiliang2 row(s) in 0.1610 seconds在開(kāi)始編程操作HBase 數(shù)據(jù)庫(kù)之前,需要對(duì)做一些準(zhǔn)備工作。(1)請(qǐng)新建一個(gè)終端,執(zhí)行下面命令,把HBase 的lib 目錄下的一些jar 文件拷貝到 Spark 中,這些都是編程時(shí)需要引入的jar 包,需要拷貝的jar 文件包括:所有hbase 開(kāi)頭的 jar 文件、guava-12.0.1.jar、htrace-core-3.1.
12、0-incubating.jar 和protobuf-java-2.5.0.jar,可以打開(kāi)一個(gè)終端按照以下命令來(lái)操作:1.cd /usr/local/spark/jars2.mkdir hbase3.cd hbase4.cp /usr/local/hbase/lib/hbase*.jar ./5.cp /usr/local/hbase/lib/guava-12.0.1.jar ./6.cp /usr/local/hbase/lib/htrace-core-3.1.0-incubating.jar ./7.cp /usr/local/hbase/lib/protobuf-java-2.5.0.
13、jar ./,后面編譯和運(yùn)行過(guò)程才不會(huì)出錯(cuò)。編寫(xiě)程序HBase 數(shù)據(jù)http:/blog/1316-2/javascript:void(0);http:/blog/1316-2/javascript:void(0);如果要讓 SparkHBase,就需要使用 SparkContext 提供的newAPIHadoopRDD API 將表的內(nèi)容以RDD 的形式加載到 Spark 中。請(qǐng)?jiān)贚inux 系統(tǒng)中打開(kāi)一個(gè)終端,然后執(zhí)行以下命令:1.cd /usr/local/spark/mycode2.mkdir hbase3.cd hbase4.mkdir -p src/main/scala5.cd s
14、rc/main/scala6.vim SparkOperateHBase.scala然后,在 SparkOperateHBase.scala 文件中輸入以下代碼:import.apache.hadoop.conf.Configuration import.apache.hadoop.hbase._t._import.apache.hadoop.hbase.mapreduce.TableInputFormat import.apache.hadoop.hbase.util.Bytesimport.apache.spark.SparkContexthttp:/blog/1316-2/javascr
15、ipt:void(0);http:/blog/1316-2/javascript:void(0);OSVUXZ GVGINK YVGXQ 9VGXQ)UTZKZ EOSVUXZ GVGINK YVGXQ 9VGXQ)UTLUHPKIZ 9VGXQ5VKXGZK.(GYK aJKLSGOT GXMY XXG_A9ZXOTMC aGR IUTL # .(GYK)UTLOMXGZOUT IXKGZK GR YI # TK 9VGXQ)UTZKZ TK 9VGXQ)UTL 設(shè)置查詢(xún)的表名IUTL YKZ :GHRK/TVZ,UXSGZ /46;:E:(2+ YZJKTZ GR YZ8* # YI TK
16、6/.GJUUV8* IUTL IRGYY5LA:GHRK/TVZ,UXSGZC IRGYY5LA GVGINK NGJUUV NHGYK OU /SSZGH_ZKY=XOZGHRKC IRGYY5LA GVGINK NGJUUV NHGYK ITZ 8KYRZC GR IUTZ # YZ8* IUTZ VXRT 9ZJKTZY 8* )UTZ IUTZ YZ8* IGINK 遍歷輸出YZ8* LUXKGIN a IGYK E XKYRZ #$GR QK_ # (_ZKY ZU9ZXOTM XKYRZ MKZ8U GR TGSK # (_ZKY ZU9ZXOTM XKYRZ MKZGRK OT
17、LU MKZ(_ZKY TGSK MKZ(_ZKY GR MKTJKX # (_ZKY ZU9ZXOTM XKYRZ MKZGRK OTLU MKZ(_ZKY MKTJKX MKZ(_ZKY GR GMK # (_ZKY ZU9ZXOTM XKYRZ MKZGRK OTLU MKZ(_ZKY GMK MKZ(_ZKY VXRT 8U QK_ QK_ 4GSK TGSK -KTJKX MKTJKX MK GMK c c然后就可以用sbt 打包編譯。不過(guò),在編譯之前,需要新建一個(gè) simple.sbt 文件,在simple.sbt 配置文件中,需要知道scalaVer、spark-core、的安裝
18、和使用的“編寫(xiě) Scala 獨(dú)立應(yīng)用程序”部分,已經(jīng)介紹了如何尋找scalaVer和spark-core 的版本號(hào),這里不再贅述?,F(xiàn)在介紹如何找到你自版本號(hào)。請(qǐng)?jiān)贚inux 系統(tǒng)中打開(kāi)一個(gè)終端,輸入下面命令:1.cd /usr/local/hbase /這是筆者電腦的hbase 安裝目錄2.cd lib3.lsls 命令會(huì)把“/usr/local/hbase/lib”目錄下的所有jar 文件全部列出來(lái),其中,就可以看到下面三個(gè)文件:hbase-cnt-1.1.5.jar/可以看本號(hào)是 1.1.5 mon-1.1.5.jar /可以看本號(hào)是 1.1.5hbase-server-1.1.5.jar
19、 /可以看本號(hào)是 1.1.5http:/blog/1316-2/javascript:void(0);http:/blog/1316-2/javascript:void(0);己電腦上安裝的HBase 的hba、mon、hbase-server 的hbamon、hbase-server 的版本號(hào)。面章節(jié)Sparkhbase-server 的版本號(hào)是 1.1.5(當(dāng)然,你的電腦上可能不是這個(gè)版本號(hào),請(qǐng)以你自己的版本號(hào)為準(zhǔn))。有了這些版本號(hào)信息,就可以新建一個(gè)simple.sbt 文件:1. cd /usr/local/spark/mycode/hbase2. vim simple.sbt然后在s
20、imple.sbt 中錄入下面內(nèi)容:name := Simple Project ver:= 1.0scalaVer:= 2.11.8libraryDependencies += .apache.spark % spark-core % 2.1.0 libraryDependencies += .apache.hbase % hbase-cnt % 1.1. 5libraryDependencies += .apache.hbase % mon % 1.1.5http:/blog/1316-2/javascript:void(0);http:/blog/1316-2/javascript:vo
21、id(0);根據(jù)上面三個(gè)文件,就可以得知hba、mon、保存該文件,退出vim 編輯器。然后,輸入下面命令:1. find . 應(yīng)該可以看到類(lèi)似下面的文件結(jié)構(gòu):下面就可以運(yùn)行sbt 打包命令:1. cd /usr/local/spark/mycode/hbase/一定把這個(gè)設(shè)置為當(dāng)前目錄./src./src/main./src/main/scala./src/main/scala/SparkOperateHBase.scala./simple.sbthttp:/blog/1316-2/javascript:void(0);http:/blog/1316-2/j avascript:void(0
22、);libraryDependencies += .apache.hbase % hbase-server % 1.1. 52. /usr/local/sbt/sbt package打包成功以后,生成的 jar 包的位置為/usr/local/spark/mycode/hbase/scala-2.11/simple-project_2.11-1.0.jar。最后,通過(guò) spark-submit 運(yùn)行程序。就可以將生成的 jar 包通過(guò)spark-submit 提交到 Spark 中運(yùn)行了,命令如下:1. /usr/local/spark/bin/spark-submit -driver-cla
23、ss-path /usr/local/spark/jars/hbase/*:/usr/local/hbase/conf -class SparkOperateHBase/usr/local/spark/mycode/hbase/scala-2.11/simple-project_2.11-1.0.jar特別強(qiáng)調(diào),上面命令中,必須使用“-driver-class-path參數(shù)指定依賴(lài)JAR 包的路徑,而且必須把/usr/local/hbase/conf也加到路徑中。執(zhí)行后得到如下結(jié)果:Students RDD Count:2Row key:1 Name:Xueqian Gender:F Age:
24、23http:/blog/1316-2/javascript:void(0);http:/blog/1316-2/javascript:void(0);http:/blog/1316-2/javascript:void(0);http:/blog/1316-2/javascript:void(0);下面編寫(xiě)程序向HBase 中寫(xiě)入兩行數(shù)據(jù)。請(qǐng)打開(kāi)一個(gè)Linux 終端,輸入如下命令:1. cd /usr/local/spark/mycode/hbase2. vim src/main/scala/SparkWriteHBase.scala上面命令用vim 編輯器新建了一個(gè)文件 SparkWrite
25、HBase.scala,然后,在SparkWriteHBase.scala 文件中輸入下面代碼:import.apache.hadoop.hbase.HBaseConfigurationimport.apache.hadoop.hbase.mapreduce.TableOutputFormat import.apache.spark._import.apache.hadoop.mapreduce.Jobimport.apache.hadoop.hbase.io.ImmutabytesWritable t.Resulthttp:/blog/1316-2/javascript:void(0);http:/blog/1316-2/j avascript:void(0);編寫(xiě)程序向 HBase 寫(xiě)入數(shù)據(jù)Row key:2 Name:Weiliang Gender:M Age:24OSVUXZ GVGINK NGJUUV NHGYK ITZ 6ZOSVUXZ GVGINK NGJUUV NHGYK ZOR (_ZKYUHPKIZ 9VGXQ=XOZK.(GYK aJKL SGOT GXMY XXG_A9ZXOTMC ;TOZ # aGR YVGXQ)UTL # TK 9V
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學(xué)年高中化學(xué)下學(xué)期第一周教學(xué)實(shí)錄
- 8第九套廣播體操6-7節(jié)5 教學(xué)設(shè)計(jì)-八年級(jí)體育與健康
- 2024年春七年級(jí)地理下冊(cè) 第七章 第一節(jié) 日本教學(xué)實(shí)錄 (新版)新人教版
- 10 青山處處埋忠骨(教學(xué)設(shè)計(jì))-2023-2024學(xué)年統(tǒng)編版語(yǔ)文五年級(jí)下冊(cè)
- 2024年五年級(jí)數(shù)學(xué)下冊(cè) 四 長(zhǎng)方體(二)第1課時(shí) 體積與容積教學(xué)實(shí)錄 北師大版
- 4 藏戲 教學(xué)設(shè)計(jì)-2023-2024學(xué)年統(tǒng)編版語(yǔ)文六年級(jí)下冊(cè)
- 誤差對(duì)產(chǎn)品質(zhì)量影響評(píng)估方案
- 企業(yè)資源規(guī)劃系統(tǒng)全面整合方案
- 2024-2025學(xué)年高中化學(xué) 第1章 物質(zhì)結(jié)構(gòu) 元素周期律 第1節(jié) 元素周期表教學(xué)實(shí)錄 新人教版必修2
- 2024年五年級(jí)英語(yǔ)上冊(cè) Unit 2 My Country and English-speaking Countries Lesson 11 Australia教學(xué)實(shí)錄 冀教版(三起)
- 2025教科版六年級(jí)科學(xué)下冊(cè)全冊(cè)教案【含反思】
- 2025年常州機(jī)電職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)含答案
- 南充經(jīng)濟(jì)開(kāi)發(fā)區(qū)投資集團(tuán)有限公司2024年招聘筆試參考題庫(kù)附帶答案詳解
- 甘肅四年級(jí)信息技術(shù)下冊(cè)教學(xué)設(shè)計(jì)(簡(jiǎn)版)(含核心素養(yǎng))
- 作文復(fù)習(xí):破繭成蝶逆天改命-《哪吒2》現(xiàn)象級(jí)成功的高考寫(xiě)作啟示 課件
- 2025年湖南機(jī)電職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)1套
- 2025中建三局(中原)社會(huì)招聘高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 【生 物】光合作用課件-2024-2025學(xué)年人教版生物七年級(jí)下冊(cè)
- 人教版 七年級(jí)英語(yǔ)下冊(cè) UNIT 2 單元綜合測(cè)試卷(2025年春)
- 2024年“新能源汽車(chē)裝調(diào)工”技能及理論知識(shí)考試題與答案
- 【地理】非洲-位置與范圍 高原為主的地形課件-2024-2025學(xué)年湘教版(2024)七下
評(píng)論
0/150
提交評(píng)論