版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、林子雨老師 2017 年 2 月 20 日1249【】博客內(nèi)容由廈門大學(xué)數(shù)據(jù)庫擁有,!返回 Spark首頁Spark 處理的數(shù)據(jù)有很多是存放在HBase 數(shù)據(jù)庫中的,所以,需要學(xué)會如何讀寫HBase 數(shù)據(jù)庫。HBase 是針對谷歌 BigTable 的開源實現(xiàn),是一個靠、高性能、面向列、可伸縮的分布式數(shù)據(jù)庫,主要用來非結(jié)構(gòu)化和半結(jié)構(gòu)化的松散數(shù)據(jù)。HBase 可以支持超大規(guī)模數(shù)據(jù),它可以通過水平擴展的方式,利用廉價計算機集群處理由超過 10 億行數(shù)據(jù)和數(shù)百萬列元素組成的數(shù)據(jù)表。如果要了解HBase 的技術(shù)原理和使用方法,可以參考廈門大學(xué)數(shù)據(jù)庫的課程HBase 數(shù)據(jù)庫。準(zhǔn)備工作一:創(chuàng)建一個 HBa
2、se 表Spark2.1.0 入門:讀寫 HBase 數(shù)據(jù)這里依然是以student 表為例進行演示。這里假設(shè)你已經(jīng)成功安裝了HBase 數(shù)據(jù)庫,如果你還沒有安裝,可以參考廈門大學(xué)數(shù)據(jù)庫 HBase 安裝和使用,進行安裝,安裝好以后,不要創(chuàng)建數(shù)據(jù)庫和表,只要跟著本節(jié)后面的內(nèi)容操作即可。HBase 安裝時有三種模式:單機模式、偽分布式模式和分布式模式。本采用偽分布式安裝。安裝好了偽分布式模式的HBase 以后,可以在里面創(chuàng)建一個student 表。 Linux 系統(tǒng),打開一個終端(可以使用快捷方式Ctrl+Alt+T 組合鍵打開終端),因為HBase 是偽分布式模式,需要調(diào)用HDFS,所以,請首
3、先在終端中輸入下面命令啟動Hadoop:1.cd /usr/local/hadoop2./sbin/start-all.sh1.jps2375 SecondaryNameNode2169 DataNode2667 NodeManager2972 Jps運行jps 命令以后,應(yīng)該可以看到以下幾個進程:啟動完成以后,一定要輸入jps 命令查看是否啟動成功:如果少了其中一個進程,說明啟動失敗。下面就可以啟動HBase,命令如下:1.cd /usr/local/hbase2./bin/start-hbase.sh /啟動HBase3./bin/hbase s /啟動hbase s這樣就可以進入hbas
4、e s 命令提示符狀態(tài)。下面在HBase 數(shù)據(jù)庫中創(chuàng)建student 表(注意:在關(guān)系型數(shù)據(jù)庫 中,需要首先創(chuàng)建數(shù)據(jù)庫,然后再創(chuàng)建表,但是,在HBase 數(shù)據(jù)庫中,不需要創(chuàng)建數(shù)據(jù)庫,只要直接創(chuàng)建表就可以):1. hbase list 用list 命令可以顯示當(dāng)前HBase 數(shù)據(jù)庫中有哪些已經(jīng)創(chuàng)建好的表,如果里面已經(jīng)有一個名稱為student 的表,請使用如下命令刪除(如果不存在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下面讓一起來創(chuàng)建一個student 表,要在這個表中錄入如下數(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 命令中,命令后面首先跟上表名稱student,然后,再跟上列族名稱info,這個列族info中包含三個列name,gender,age。你會發(fā)現(xiàn),好像沒有id字段,這是因為HBase 的表中會有一個系統(tǒng)默認(rèn)的屬性作為行鍵,無需自行創(chuàng)建,默認(rèn)把 put 命令操作中跟+| id| name| gender | age|+|1 | Xueqian| F|23 |2 | Weiliang | M|24 |+在
7、表名后的第一個字段作為行健。創(chuàng)建完“student”表后,可通過describe 命令查看“student”表的基本信息:1. hbase describe student下面,要把student 表的兩個樣例輸入到student 表中。但是,HBase是列族數(shù)據(jù)庫,原理和關(guān)系數(shù)據(jù)庫不同,操作方法也不同。如果要了解HBase的技術(shù)原理和使用方法,可以參考廈門大學(xué)數(shù)據(jù)庫的課程HBase數(shù)據(jù)庫。如果沒有時間學(xué)習(xí)HBase 數(shù)據(jù)庫細節(jié)知識,也可以直接按照下面的內(nèi)容跟著操作就可以了。HBase 中用put 命令添加數(shù)據(jù),注意:一次只能為一個表的一行數(shù)據(jù)的一個列(也就是一個單元格,單元格是HBase 中
8、的概念)添加一個數(shù)據(jù),所以直接用s 命令數(shù)據(jù)效率很低,在實際應(yīng)用中,一般都是利用編程操作數(shù)據(jù)。因為這里只要兩條學(xué)生,所以,可以用 s命令手工。/首先錄入student 表的第一個學(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 表的第二個學(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在開始編程操作HBase 數(shù)據(jù)庫之前,需要對做一些準(zhǔn)備工作。(1)請新建一個終端,執(zhí)行下面命令,把HBase 的lib 目錄下的一些jar 文件拷貝到 Spark 中,這些都是編程時需要引入的jar 包,需要拷貝的jar 文件包括:所有hbase 開頭的 jar 文件、guava-12.0.1.jar、htrace-core-3.1.
12、0-incubating.jar 和protobuf-java-2.5.0.jar,可以打開一個終端按照以下命令來操作: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 ./,后面編譯和運行過程才不會出錯。編寫程序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 中。請在Linux 系統(tǒng)中打開一個終端,然后執(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è)置查詢的表名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 打包編譯。不過,在編譯之前,需要新建一個 simple.sbt 文件,在simple.sbt 配置文件中,需要知道scalaVer、spark-core、的安裝
18、和使用的“編寫 Scala 獨立應(yīng)用程序”部分,已經(jīng)介紹了如何尋找scalaVer和spark-core 的版本號,這里不再贅述?,F(xiàn)在介紹如何找到你自版本號。請在Linux 系統(tǒng)中打開一個終端,輸入下面命令:1.cd /usr/local/hbase /這是筆者電腦的hbase 安裝目錄2.cd lib3.lsls 命令會把“/usr/local/hbase/lib”目錄下的所有jar 文件全部列出來,其中,就可以看到下面三個文件:hbase-cnt-1.1.5.jar/可以看本號是 1.1.5 mon-1.1.5.jar /可以看本號是 1.1.5hbase-server-1.1.5.jar
19、 /可以看本號是 1.1.5http:/blog/1316-2/javascript:void(0);http:/blog/1316-2/javascript:void(0);己電腦上安裝的HBase 的hba、mon、hbase-server 的hbamon、hbase-server 的版本號。面章節(jié)Sparkhbase-server 的版本號是 1.1.5(當(dāng)然,你的電腦上可能不是這個版本號,請以你自己的版本號為準(zhǔn))。有了這些版本號信息,就可以新建一個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ù)上面三個文件,就可以得知hba、mon、保存該文件,退出vim 編輯器。然后,輸入下面命令:1. find . 應(yīng)該可以看到類似下面的文件結(jié)構(gòu):下面就可以運行sbt 打包命令:1. cd /usr/local/spark/mycode/hbase/一定把這個設(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。最后,通過 spark-submit 運行程序。就可以將生成的 jar 包通過spark-submit 提交到 Spark 中運行了,命令如下: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特別強調(diào),上面命令中,必須使用“-driver-class-path參數(shù)指定依賴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);下面編寫程序向HBase 中寫入兩行數(shù)據(jù)。請打開一個Linux 終端,輸入如下命令:1. cd /usr/local/spark/mycode/hbase2. vim src/main/scala/SparkWriteHBase.scala上面命令用vim 編輯器新建了一個文件 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);編寫程序向 HBase 寫入數(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. 本站所有資源如無特殊說明,都需要本地電腦安裝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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版綠色建筑施工現(xiàn)場環(huán)保設(shè)施租賃合同2篇
- 2025年林業(yè)重點工程項目樹木種植承包合同范本3篇
- 2025年水上運輸船舶檢驗與認(rèn)證合同3篇
- 2025年度大連建筑工程施工合同施工場地占用協(xié)議3篇
- 二零二五版砍樹承包合同聯(lián)合森林碳匯交易協(xié)議2篇
- 二零二五版大豆期貨交易委托合同樣本2篇
- 二零二四上海離婚協(xié)議書定制與婚姻法律風(fēng)險評估、咨詢、代理、調(diào)解及訴訟服務(wù)合同3篇
- 2024新借款合同范本
- 2025年度綠色屋頂綠化租賃項目合同4篇
- 二零二五年度玻璃幕墻保溫隔熱材料供應(yīng)合同樣本3篇
- 充電樁項目運營方案
- 2024年農(nóng)民職業(yè)農(nóng)業(yè)素質(zhì)技能考試題庫(附含答案)
- 高考對聯(lián)題(對聯(lián)知識、高考真題及答案、對應(yīng)練習(xí)題)
- 新版《鐵道概論》考試復(fù)習(xí)試題庫(含答案)
- 【律師承辦案件費用清單】(計時收費)模板
- 高中物理競賽真題分類匯編 4 光學(xué) (學(xué)生版+解析版50題)
- Unit1FestivalsandCelebrations詞匯清單高中英語人教版
- 西方經(jīng)濟學(xué)-高鴻業(yè)-筆記
- 2024年上海市中考語文試題卷(含答案)
- 幼兒園美術(shù)教育研究策略國內(nèi)外
- 生豬養(yǎng)殖生產(chǎn)過程信息化與數(shù)字化管理
評論
0/150
提交評論