分布式数据库HBase安装配置与实践_第1页
分布式数据库HBase安装配置与实践_第2页
分布式数据库HBase安装配置与实践_第3页
分布式数据库HBase安装配置与实践_第4页
分布式数据库HBase安装配置与实践_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验指导书分布式数据库HBase安装配置与实践实验目的HBase安装配置与实践实验环境本教程运行环境是Cent OS 64位系统下,HBase版本为hbase-bin.tar.gz,这是目 前已经发行的已经编译好的稳定的版本,带有src的文件是未编译的版本。下载地址 HYPERLINK /dyn/closer.cgi/hbase/ /dyn/closer.cgi/hbase/实验步骤安装并配置HBaseHBase安装解压安装包hbase-bin.tar.gz至路径 /usr/local,命令如下:cd /usr/localsudo tar -zxvf hbase-bin.tar.gz将解压的文

2、件名hbase-改为hbase,以方便使用,命令如下:sudo mv hbase- hbase配置环境变量将hbase下的匕血目录添加到path中,这样,启动hbase就无需到/usr/local/hbase目录下, 大大的方便Yhbase的使用。教 程下面的部分还是切换到了/usr/local/hbase目录操作,有 助于初学者理解运行过程,熟练之后可以不必切换。编辑/.bashrc文件vi /.bashrc如果没有引入过PATH请在/.bashrc文件尾行添加如下内容:export PATH=$PATH:/usr/local/hbase/bin如图1:export JAVA_HCME=/u

3、sr/ /jdkl, 7, 0_67export PATH=tJAVA_HDr-1E/bir: iPATH:I export HAD0aP_H0ME=/L5r/ /tiadoopexport HAD00P_IN5TALL=$HAD00P_H0MEexport HAD00P_MAPRED_H0NE=SHAD00P_H0r-1Eexport HAD00P_COMMON,H0NE=fHAD00P_HOMEexport HAD00P_HDFS_H0ME=tHAD00P_HOI-IEexport YARN,H0ME=SHAD00P_HOMEgxport HADOOP_COMMON_LIB_NATIVE_

4、DIR=$HADOOP_HOHE/lib/liativeexport PATH=IPATH: SHADOOF,HOME/Sbin: $HAD00P_HOME/blnexport PATH=IPATH: /usr/locaVhbase/bin图1编辑完成后,再执行source命令使上述配置在当前终端立即生效,命令如下:source /.bashrc扩展阅读:设置Linux环境变量的方法和区别(下附)添加HBase权限sudo chown -R hadoop:hadoop./hbasehbase下的所有文件的所有者以及用户组改为hadoop,hadoop是当前用户的用户名。查看HBase版本,确定

5、hbase安装成功,命令如下:hbase version命令执行后,输出信息截图如图2:团h adOOphDsVlS2- L68-5- l7:/usr/local_ XFile Edit View Search lerminai Helphadoopbost-192-168-5-167 local$ hbase versionIA2017-06-22 O2:03:47,686 INF口 :mainl util.versloninfa: HB35e 1.0,1.12917-06-22 02:03:47,687 INFO ain util.Versioninfo; Source code repo

6、sitory g二t!/asp:re/home/apurtell/tmp/hbase-builri-2 revision=eldbf4df30d2LfcaL4908df71dO380B1577ea462017-06 -22 02:03: i17r 687 INFO -main util .Versioninfo: Compiled by apurtell on Sun Hay 17 12:34:26 PDT 20152917-06-22 02;03;47p689 INFO ain util.Versioninfo; rrom source with checksum L11670655c3a2

7、fe747723232c402f0e2rtiadoopho5t-192-168-5-167 local$图2看到以上输出消息表示HBase已经安装成功,接下来将分别进行HBase单机模式和伪分布式模 式的配置。HBase配置HBase有三种运行模式,单机模式、伪分布式模式、分布式模式。作为学习,我们重点讨论 单机模式和伪分布式模式。以下先决条件很重要,比如没有配WAVA_HOME环境变量,就会报错。jdkHadoop(单机模式不需要,伪分布式模式和分布式模式需要)SSH以上三者如果没有安装,请回到第二章的实验指导参考如何安装。伪分布式模式配置1.配置/usr/local/hbase/conf/

8、hbase-env.sh。命令如下:vi /usr/local/hbase/conf/hbase-env.sh配置JAVA_HOME,HBASE_CLASSPATH,HBASE_MANAGES_ZK.HBASE_CLASSPATH设置为本机Hadoop安装目录下的conf 目录(即/usr/local/hadoop/conf)export JAVA_HOME=/usr/lib/jvm/java-1.7.0_67export HBASE_CLASSPATH=/usr/local/hadoop/confexport HBASE_MANAGES_ZK=true截图如图5:因hadoDphDst-19

9、2-168-5-lE7:/u5r/locall/hbase/conf_ xFile Edit view search Terminal Helpotherwise arrive faster thar the master can service Them.export HBASE SLAVE SLEEPO.lTell HBase whether it should manage its own nsrance of Zookeeper nr nor,export HBASE MANAGES ZKLrueThe default 1.0g oiling pol icy is RFA, where

10、 The log fi Le Is rolled as per the size der_ned for ;heRFA apperder. Please refer to the Log4j .properties file to see mo re details on this日即日把.In case ori5 needs to de log rolling on a date change, one should set the envir anmient propertyHBASF_ROOT_LOGGEf to ,DRF11.For example:HBASE RO0T_LOGGER=

11、HNFOPDRFAThe reasonor changing default to ftFA is To avoid the boundary case of Llln g out disk space asDRFA doesnt put any cap on tne log size. Please refer to HBase-5655 for more conrexT.sxport JAVA_HOME=/usr/Lib/jvn/java-l.T.Gexport HBASE_MANAGES_ZK=tnie139r28Botexport 139r28Bot.配置/usr/local/hbas

12、e/conf/hbase-site.xml用命令vi打开并编辑hbase-site.xml,命令如下:vi /usr/local/hbase/conf/hbase-site.xml修改hbase.rootdir,指定HBase数据在HDFS上的存储路径;将属性hbase.cluter.distributed设置为true。假设当前Hadoop集群运行在伪分布式模式下,在本 机上运行,且NameNode运行在9000端口。(configurationhbase.rootdirhdfs:/etc03:9000/hbasehbase.cluster.distributedtruehbase.zook

13、eeper.quorumhbase.rootdir指定HBase的存储目录;hbase.cluster.distributed设置集群处于分布式模式.截图如图6:图6.接下来测试运行HBase。第一步:首先登陆ssh,之前设置了无密码登陆,因此这里不需要密码;再切换目录至/usr/local/hadoop ;再启动hadoop,如果已经启动hadoop请跳过此步骤。命令如下:cd /usr/local/hadoop./sbin/start-all.sh输入命令jps,能看到NameNode,DataNode和SecondaryNameNode都已经成功启动,表示hadoop 启动成功,截图如图

14、7:园hadoophost-192-153-5-L&7:/usr/lscal/hbaseconf_ n xFile Edit View Search lerminal Helphadoopfaiiost 192-168-5 167 conf$|Tt日匕dfs,sh 17/06/22 02:23:15 WARN til. MativF:to load nmtine-hadciop libwry for your platform. using builtin-iava classes where applicableStarting namenodes or pcalhostlocalbost:

15、 starting ramerode, loggirg to /usr/local/hadoop/logs/hadoop-hadcop-namenHle-host-i92-iM 5-L&7.outlocalbost; starting datancde, loggirg to /usr/local/hadoop/logs/hadoop-hadcop da tanode-nost-192-160-5-167.outstarting secondary namenodes e.e.e.e白.日,Q.G: startirg secondarynamenodep lagging to /uar/loc

16、al/hadoop/lDgs/hadcop ha doop-secondarynamenode-host-192-168-5-L67.out17/06/22 02:23:35 warn ulil.NatiecodeLoader: unable to load native-hddoojj library for your platform. uwing builtin- j ava classes inhere applicablehaduci口hut- 19。-11日-5-conf J Fps-!697 DatanodeL1t609 NameNcde197R Jps!874 secondar

17、yNaueNodeInadoc-pano5t-152 - ibB -h - lb/ conf $图7第二步:切换目录至/usr/local/hbase;再启动HBase.命令如下:cd /usr/local/hbasebin/start-hbase.sh启动成功,输入命令jps,看到图8界面说明hbase启动成功had&Dphost-L92-ia3-5-ie7:/usr/local/hbaseconf_ n xFile Edit View Search lerminal HelpIh,adoopahost-192-168-5-167 conf J jps3572 org.ecliDse.equ

18、inox.launcher /20150511-150. jar2697 DataNoce6361 Jps4776 HRegionServer2609 NameNode5582 HFIaster |3483 Plain5490 HQuorumPeer2874 secondaryNam&NKKle图8进入shell界面:bin/hbase shell截图如图9:hadoop(aho5t-192-168-5-167 bin$ hbase shellSLF4J : S.ass path contains multiple 5LF4J bind. mgs.SLF4J1 : Found binding

19、in jar: file:/dsr/local/hbase/lib/slf4j-log4j 12-1.7.7.Jar!/ crg/slf4j/impl/StaticLoggerBirder.classISLF4J: Found binding in jar:fiLer/usr/iocal/hadoop/share/hadoop/comman/lib/slffl- j -L叫书 12 -1.7.5. j ar !/o rg/5lf4/iinpl/StdticLogger Binder, classSLF4J: See http:/tyww.slf4j .org/codcs.html#multLp

20、le_bindings for an explanation.SLF4J : Actual binding is of type Lorg.slf4j.impl ,Lcig4jLDggerFactory 2017-06-22 02:30:19 r000 WARN - nain util.NaLiveCodeLoader: Unable to load naliv e-Tadoop library for your platfori. using bjiltin-java classes where applicablHBase Shell; enter helpRETURN for list

21、of supported command5.Type exit to leave the HBase Shellversion , reidbf4df3Od2i4fcai4908d7id038e8i577ea46P 5ur nay 17 12:34:26PDT 2015Tf base(main):801:0 |图9.停止HBase运行,命令如下:bin/stop-hbase.sh注意:如果在操作HBase的过程中发生错误,可以通过HBASE_HOME目录(/usr/local/hbase )下的10gs子目录中的日志文件查看错误原因。这里启动关闭Hadoop和HBase的顺序一定是:启动Had

22、oop启动HBase关闭HBase关闭Hadoop1.3.2编程实践.利用Shell命令HBase中创建表HBase中用create命令创建表,具体如下:create student,Sname,Ssex,Sage,Sdept,course 命令执行截图如图10:bdse(mdin)create student1,1 Snante J Ssex 1, Sage , Sde)tr, courseow(s) in LE)77 Gecunds图10此时,即创建了一个 “student” 表,属性有:Sname,Ssex,Sage,Sdept,course。因为HBase 的表中会有一个系统默认的属性

23、作为行键,无需自行创建,默认为put命令操作中表名后第 一个数据。创建完“student”表后,可通过describe命令查看“student”表的基本信息 。命令执行截图如图11:hbase(main)de&cribe 1 student1DESCRIPTIONENABLEDstudent , NAME = 1 Sage 1, DATA_BLOCK_ENCODING = NONEd BLOOHFILTER = NON true E1 , REPL 工 CATH ON _*O PE =,1 0d VERSIONS = 3 ( COMPRESSION = 1 NONE* MIN_VERS IOM

24、S W , TTL a (false*, BLOCKSIZE = 165536 _ IN_MEMORY -falseH, ENCGDE_ON_DISK 二a 1 true1, BLOCKCACHE - 1 true1) (MAME - 7Sdept, DATA_BLOCK_ENCODING 二A NOME, BLOOMFILTER =A NONE, REPL ICATIONSCOPE =, VERSIONS= T3 COMPfiESSION = NONE, MIN_yERION =O r TTL = 2147431647, KEEP_DELETED_CELLS = 1 false? BLOCK

25、SIZE =* 6SS36,in_nEhORv = 1false1f encode_5n_disk = true, blqckcache = true1, (name= 15nane, ata_bLacK_ENcoding = Tnone 1F bloomfilter = hQNE, replicatton_ SCOPE = O, VERSIONS = 3 f COMPRESSION = NONE f*IIN_VERSIQN5 = W , TTL = 2147133647 , KEEP_DELETED_CE L LS = false , BLOCKS I ZE =? ”5536、IN_MEMQ

26、RY = false H encode_on_disk = true, blockcache = true, name = 1 ssex ,DATA_B LOCK_ENCCID I NG = NONE1, BLOOMFILTER = NONE , REPLICATION_SCOPE =, VERSIONS 3,, COMPRESSION HONE, MIN_VERS1ON5 = 飞,TTL = 2147 4g3647、 KEEP_DELETED_CELLS = false p BLOCKSIZE = 655S61, IN_HEMOR - fa Ise, ENCODE_ON_DI5K - tru

27、e, BLOCKCACHE = true, NAME - course p DATA _BLOCK_ENCODING = HNONE1t BLOOMFILTER = MONE , REPLICATiaN_SCOPE = O , VE RSIONS = 3d, COMPRESSION = H NONE1 p MIM_VERSIONS = 白TTL = H 2147483647 ,KEEP &ELETED_CELLS alse* BLOCKSIZE = 1655361 s IN MEMORY (false1 E NCODE ON DISK 二true 1, BLOCKCflCHE = 1 true

28、row(s) tn A.second图111.2 HBase数据库基本操作本小节主要介绍HBase的增、册h改、查操作。在添加数据时,HBase会自动为添加的数据添 加一个时间戳,故在需要修改数据时,只需直接添加数据,HBase即会生成一个新的版本, 从而完成“改”操作,旧的版本依旧保留,系统会定时回收垃圾数据,只留下最新的几个版 本,保存的版本数可以在创建表的时候指定。添加数据HBase中用put命令添加数据,注意:一次只能为一个表的一行数据的一个列,也就是一个单 元格添加一个数据,所以直接用shell命令插入数据效率很低,在实际应用中,一般都是利 用编程操作数据。当运行命令:put stu

29、dent , 95001 , Sname , LiYing 时,即为student表添加 了学号为95001,名字为LiYing的一行数据,其行键为95001。put student,95001,Sname,LiYing命令执行截图如图12,即为student表添加了学号为95001,名字为LiYing的一行数据,其行 键为95001。hbase(main):0D3:0 put student,95001,Sname,1LiYing row(s) tn 0,6300 seconds图12put student,95001,course:math,80命令执行截图如图13,即为95001行下的c

30、ourse列族的math列添加了一个数据。hbase(main)1925:0 put 1 student1,1950Q11,course:math1,18G 9 row(s) in 9*0030 seconds图13删除数据在HBase中用delete以及deleteall命令进行删除数据操作,它们的区别是:1. delete用于 删除一个数据,是put的反向操作;2. deleteall操作用于删除一行数据。delete命令delete student,95001,Ssex命令执行截图如图14,即删除Ystudent表中95001行下的Ssex列的所有数据。hbase(Piatn):O26

31、3 0?*O row(sJ in 0 r 0G2Ohbase(Piatn):O26 3 0?*O row(sJ in 0 r 0G2Ohb3se(natn):O27:0COLUMNSage:Sdept i snane: course:math4 row(s) in 0.9120get student H 195091,CELLtinestanp=142912S25676, timestanp=l442912586483, ttnestanp=lil4291Z495l42,secondsvalue=20 value=CS Vdlue=Ltthgti.nestanp=1442912802499,

32、value=80delete student1, 95001f ssex seconds图14deleteall命令deleteall student,95001 命令执行截图如图15,即删除Ystudent表中的95001行的全部数据。deleteall. 1 student1 , 1950011 secondshbase(ndtn):029:i3ROWhbase(ndtn):029:i3ROW0 row(s in .503。COLUMN十CELL seconds图15查看数据HBase中有两个用于查看数据的命令:1. get命令,用于查看表的某一个单元格数据;2. scan 命令用于查看某

33、个表的全部数据get命令get student,95001命令执行截图如图16,返回的是student表95001行的数据。hbase(nain):024:Q get 1 studentr,950011COLUMNCELLsageitinest苜由口=14。291252567已,value=20Sdept:tinestanp=1429125S64S3,value=CSSnane:tinestampvalue=LiYingssex:ttnestamp=:i4ii29i2510852,value=nalecourse:nathtinestanp=142912902499,

34、value=S05 row(s) in 0.0080 seconds图16scan命令scan student 命令执行截图如图17,返回的是student表的全部数据。hbdse(HdtnJ:025:0?- scan 1 student ROWCOLUMN+CELL95QG19500195QG19500195QG11 row(s) tn e+0129 secondsCQlumn=Sage:湄 timestamp=144291252S676/ wal_ue=20 column=sdept:, ttnestanp=l4429i12586483, vdlme=cs column=Snaime:,

35、tinestamp=144291249s5442, va-Lue=LtYing colunn=ssexs 95QG19500195QG19500195QG11 row(s) tn e+0129 seconds图 17删除表删除表有两步,第一步先让该表不可用,第二步删除表。disable studentdrop student命令执行截图如图18:hbdse(matn)ttstTABLEScore student2.hbdse(matn)ttstTABLEScore student2. row(s) in 0*0130 seconds= Seore, student hbase(main):00

36、8;0 row(s) tn 2,3450hbase(main):909:0 0 row(s) tn 1,276&hba&efmatn)TABLE Score 1 row(s) in 9,0359= L11 ScoreJ hbase(matn);&11|disable 1 student secondsdrop 1 student secondslistseconds图18查询表历史数据查询表的历史版本,需要两步。1、在创建表的时候,指定保存的版本数(假设指定为5)create teacher,NAME=username,VERSIONS=52、插入数据然后更新数据,使其产生历史版本数据,注意:

37、这里插入数据和更新数据都是 用put命令put teacher,91001,username,Maryput teacher,91001,username,Mary1put teacher,91001,username,Mary2put teacher,91001,username,Mary3put teacher,91001,username,Mary4put teacher,91001,username,Mary53、查询时,指定查询的历史版本数。默认会查询出最新的数据。(有效取值为1到5)get teacher,91001,COLUMN=username,VERSIONS=5 查询结果截

38、图如图19:hbase(main):020:oCOLUMNusernane:usemane:username:usernarneiusernane:5 row(s) tn 0.0290hbase(Fiain) :021: oCOLUMNusername:usemameiusername:hbase(main):020:oCOLUMNusernane:usemane:username:usernarneiusernane:5 row(s) tn 0.0290hbase(Fiain) :021: oCOLUMNusername:usemameiusername:3 row(s) in 0.0110

39、CELLvalue=Mary5 vfllue=Mdry4 vdlue=Mdry3value=Maryltimestd 叩加, tlmestanp=14G945n69561, timestanp=146945136644Sf ttmetanp=3469451363530, timestanp=146945135110Zvalue=Mary5 vfllue=Mdry4 vdlue=Mdry3value=Marylsecondsget teacher,919011,C0LUrtN=,usernane1,versions=3CELLtimestanp=l46945l37142

40、0 vdl.ue=Mary5tiinestanp=34159451369561 r vatue=Mary4timestanp=146945136644Sf Vdlu&=Nary3 secondshbase( natn) :0Z2: g图19退出曲256数据库表操作 最后退出数据库操作,输入0乂五命令即可退出,注意:这里退出HBase数据库是退出对数据 库表的操作,而不是停止启动HBase数据库后台运行。exit2. Java API编程实例本实例使用Eclipse编写java程序,来对HBase数据库进行增删改查等操作,Eclipse可以在 Ubuntu软件中心搜索下载并安装。第一步:启动ha

41、doop,启动hbasecd /usr/local/hadoop ./sbin/start-dfs.sh cd /usr/local/hbase ./bin/start-hbase.sh第二步,新建Java Project新建Class (图20,图21)图20图21第三步:在工程中导入外部jar包:这里只需要导入皿$6安装目录中的lib文件中的所有jar包。新版的Hbase1.1.2的javaapiE经发生变化,旧版的部分apiE经停止使用,教材上第四章 编程实例部分,请以本教程为准(图22)。rype nicer icKmdM印cerny used,jan*rZip oscumerfeJ5

42、k tures deosdoopsktope System【伯曲照爆he15m亚rype nicer icKmdM印cerny used,jan*rZip oscumerfeJ5k tures deosdoopsktope System【伯曲照爆he15m亚O BvJ - CrafiteM/C/YII.esaunceBuildersAdd Variable.Add LiibraiY-.-z ZQDk:eepeF3.4.6.jar774 4 KB01/23/7015ra-l.O.jar92.5 KBDlj,23/2015xmienc-0.52.jar14.7 KBDl/22015Eniappy-

43、jav&-L.D. 1 Jar972 6 KBDlj22015712-1.7 7Jar一Stmei107221Slf4f-api-l.T7,f8r20.6k:B107220147 servlet-api-2 5-&L 两arL3 KB01/23/2015+ servlet-api-2 5旭102 6 KB01/23/2015,0 jar521 0 KBWZ短如5paranamer23sfarZ8.9 KBUL期时53而项向洞1.7 MBM2 期2015二,nEtty-3.2.i.Final.jar771.7 KB01/232015二,mrics-core-S.S.O.jarS0.2 KBDU2

44、2CH52 Iag4j-1.2.17.jar47B 4 KBDl.i72015libtihrfFr-a.3D.jar南4 KBDlj220157 leveldbjn-alM.B.;ar1021 5 KBjunit-4.LL.jar235 3 KBDlj23015D5;L7/2O15Add aass Folder.图22这里给出一个编程实例,以下是源代码:import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.hbase.*;import org.apache.hadoop.hbase.client.*;impor

45、t java.io.IOException;public class ExampleForHbasepublic static Configuration configuration;public static Connection connection;public static Admin admin;主函数中的语句请逐句执行,只需删除其前的/即可,如:执行insertRow时请将其 他语句注释public static void main(String口 args)throws IOException创建一个表,表名为Score,列族为sname,coursecreateTable(Sc

46、ore”,new Stringsname,course);在Score表中插入一条数据,其行键为95001,sname为Mary (因为sname列族下没 有子列所以第四个参数为空)/等价命令:put Score,95001,sname,Mary/insertRow(Score, 95001, sname, , Mary);在Score表中插入一条数据,其行键为95001,course:Math为88 (course为列族, Math为course下的子列)等价命令:put Score,95001,score:Math,88/insertRow(Score, 95001, course, Ma

47、th, 88);在Score表中插入一条数据,其行键为95001,course:English为85(course为列 族,English为course下的子列)等价命令:put Score,95001,score:English,85/insertRow(Score, 95001, course, English, 85);1、删除Score表中指定列数据,其行键为95001,列族为course,列为Math执行这句代码前请deleteRow方法的定义中,将删除指定列数据的代码取消注释 注释,将删除制定列族的代码注释等价命令:delete Score,95001,score:Math/del

48、eteRow(Score, 95001, course, Math);2、删除Score表中指定列族数据,其行键为95001,列族为course(95001的Math 和98M$卜的值都会被删除)执行这句代码前请deleteRow方法的定义中,将删除指定列数据的代码注释,将 删除制定列族的代码取消注释等价命令:delete Score,95001,score/deleteRow(Score, 95001, course, );3、删除Score表中指定行数据,其行键为95001执行这句代码前请deleteRow方法的定义中,将删除指定列数据的代码注释,以 及将删除制定列族的代码注释等价命令:d

49、eleteall Score,95001/deleteRow(Score, 95001, , );查询Score表中,行键为95001,列族为course,列为Math的值/getData(Score, 95001, course, Math);查询Score表中,行键为95001,列族为sname的值(因为sname列族下没有子列所 以第四个参数为空)/getData(Score, 95001, sname, );删除Score表/deleteTable(Score);)建立连接public static void init()configuration = HBaseConfigurati

50、on.create();configuration.set(hbase.rootdir,hdfs:/localhost:9000/hbase);try(connection = ConnectionFactory.createConnection(configuration);admin = connection.getAdmin();catch (IOException e)e.printStackTrace();)关闭连接public static void close()try(if(admin != null) admin.close();)if(null != connection)

51、 connection.close();)catch (IOException e) e.printStackTrace();)/*建表。HBase的表中会有一个系统默认的属性作为主键,主键无需自行创建,默认为 put命令操作中表名后第一个数据,因此此处无需创建id列param myTableName 表名param colFamily 列族名throws IOException/public static void createTable(String myTableName,String colFamily) throws IOException init();TableName tabl

52、eName = TableName.valueOf(myTableName);if(admin.tableExists(tableName)System.out.println(talbe is exists!);else HTableDescriptor hTableDescriptor= new HTableDescriptor(tableName);for(String str:colFamily)HColumnDescriptor hColumnDescriptor = new HColumnDescriptor(str); hTableDescriptor.addFamily(hCo

53、lumnDescriptor);)admin.createTable(hTableDescriptor);System.out.println(create table success);)close();)/*删除指定表param tableName 表名throws lOException/public static void deleteTable(String tableName) throws lOException init();TableName tn = TableName.valueOf(tableName);if (admin.tableExists(tn) admin.d

54、isableTable(tn);admin.deleteTable(tn);)close();)/*查看已有表throws lOException/public static void listTables() throws lOException init();HTableDescriptor hTableDescriptors口 = admin.listTables();for(HTableDescriptor hTableDescriptor :hTableDescriptors)System.out.println(hTableDescriptor.getNameAsString();

55、)close();)/*向某一行的某一列插入数据param tableName 表名param rowKey 行键param colFamily 列族名param col列名(如果其列族下没有子列,此参数可为空)param val 值throws lOException/public static void insertRow(String tableName,String rowKey,String colFamily,String col,String val) throws lOException init();Table table = connection.getTable(Tabl

56、eName.valueOf(tableName);Put put = new Put(rowKey.getBytes();put.addColumn(colFamily.getBytes(), col.getBytes(), val.getBytes(); table.put(put);table.close();close();/*删除数据param tableName 表名param rowKey 行键param colFamily 列族名param col 列名throws IOException/public static void deleteRow(String tableName

57、,String rowKey,String colFamily,String col) throws IOException init();Table table = connection.getTable(TableName.valueOf(tableName);Delete delete = new Delete(rowKey.getBytes();删除指定列族的所有数据/delete.addFamily(colFamily.getBytes();删除指定列的数据/delete.addColumn(colFamily.getBytes(), col.getBytes();table.del

58、ete(delete);table.close();close();)/*根据行键rowkey查找数据param tableName 表名param rowKey 行键param colFamily 列族名param col 列名throws IOException/public static void getData(String tableName,String rowKey,String colFamily,String col)throws IOExceptioninit();Table table = connection.getTable(TableName.valueOf(tab

59、leName);Get get = new Get(rowKey.getBytes();get.addColumn(colFamily.getBytes(),col.getBytes();Result result = table.get(get);showCell(result);table.close();close();)/*格式化输出* param result*/public static void showCell(Result result)Cell cells = result.rawCells();for(Cell cell:cells)System.out.println(

60、RowName:+new String(CellUtil.cloneRow(cell)+ );System.out.println(Timetamp:+cell.getTimestamp()+“);System.out.println(column Family:+newString(CellUtil.cloneFamily(cell)+“);System.out.println(row Name:+newString(CellUtil.cloneQualifier(cell)+“);System.out.println(value:+new String(CellUtil.cloneValu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论