《Hadoop生态系统及开发 实训手册 实训8 HBase的API实战.docx》由会员分享,可在线阅读,更多相关《Hadoop生态系统及开发 实训手册 实训8 HBase的API实战.docx(10页珍藏版)》请在第一文库网上搜索。
1、实训4.3 HBase的API实战L实训I目的认识HBaSeJaVaAPl并且学会简单的使用,编程实现JaVa连接HBase,编 程实现Java操作HBase表,进行数据的增删改查。2 .实训内容(1) Java编程实现连接HBase(2) JaVa编程实现对HBaSe表的基本操作3 .实训要求以小组为单元进行实训,每小组5人,小组自协商选一位组长,由组长安排 和分配实训任务,具体参考实训操作环节。需要确保HDFS. ZooKeeper与HBase 等环境安装正确。4 .准备知识(1) HBase 的 API 说明HBase采用Java实现,原生客户端也是Java实现,其他语言需要通过thri
2、ft 接口服务间接访问HBase的数据。HBaSe作为大数据存储数据库,其写能力非常强,加上HBaSe本身就脱胎 于HadOOp,所以和HadooP的兼容性极好。(2) HBaSeJaVaAPl 介绍几个主要HBase API类和数据模型之间的对应关系如表4-7所示。表4-7 APl类和数据模型之间的关系java 类HBase数据模型HBaseAdmin数据库(DataBase)HBaseConfigurationHTable表(Table)HT ableDescriptor列族(Column Family)Put歹IJ修饰符(Column Qualifier)GetScanner HBase
3、Admin关系:org.apache.hadoop.HBasexlient.HBaseAdmin作用:提供了一个接口来管理HBase数据库的表信息。它提供的方法包括: 创建表,删除表,列出表项,使表有效或无效,以及添加或删除表列族成员 等。它的返回值、函数和描述信息如表4-8所示。表4.8返回值、函数和描述信息返回值函数描述voidaddColumn(String tableN ame,HColumnDescriptor column)向一个己经存在的表添 加列CheckHBaseA vailable(HB aseConfiguration conf)静态函数,查看HBaSe是 否处于运行状态
4、createTable(HTableDescri创建一个表,同步操作ptor desc)deleteTable(byte tableN ame)删除一个已经存在的表enableTable(byte tableN ame)使表处于有效状态disableTable(byte table Name)使表处于无效状态HTableDescriptorfIistTablesO列出所有用户控件表项voidmodifyTable(byte table Name,HTableDescriptor h td)修改表的模式,是异步的 操作,可能需要花费一 定的时间booleantableExists(Sting t
5、ableNa me)检查表是否存在用法用例:HBaseAdmin admin = new HBaseAdmin(Config);admin-disableTableCtablename) HBaseConfiguration关系:org.apache.hadoop.HBase.HBaseConfiguration 作用:对HBaSe进行配置。它的返回值、函数和描述信息如表4-9所示。表4-9返回(苴、函数和描述信息返回值函数描述voidaddResource(Path file)通过给定的路径所指的文件来添加资源voidclear()清空所有已设置的属性stringget(String nam
6、e)获取属性名对应的值StringgetBoolean(String name,bool ean获取为boolean类型的属性值,如果其属性值 类型部位boolean,则返回默认属性值voidset(String name,String valu e)通过属性名来设置值voidsetBoolean(String name,bool ean设置boolean类型的属性值用法用例:HBaseConfiguration hconfig = new HBaseConfigurationO;hconfig.set(hbase.zookeeper.property .ClientPort ,218 ,);
7、该方法设置亍hbase.zookeeper.property.ClientPort”的端 口号% 2181。一般情 况下,HBaSeCOnfigUratiOrl会使用盾造函薮进行初始化,然后在使用其他方法。 HTableDescriptor关系:org.apache.hadoop.HBase.HTableDescriptor作用:包含了表的名字极其对应表的列族。它的返回值、函数和描述信息如表4-10所示。表4-10返回值、函数和描述信息返回值函数描述voidaddFamily(HColumnDescriptor)添加一个列族HColumnDescripto rremoveFamily(byte
8、 column)移除一个列族bytegetName()获取表的名字bytegetvalue(byte key)获取属性的值voidsetValue(String key,String valu e)设置属性的值用法用例:HTableDescriptor htd = new HTableDescriptor(table);htd.addFamily(new HcolumnDescriptorCfamily);在上述例子l,通过一个 HCOIUmnDeSCriPtor 实例,为 HTableDeSCriPtor 添 加了一个列族:family,该方法设置了hbase.zookeeper.prope
9、rty.clientPort的端口号为 2181o 般情况下,HBaSeCOnfigUratiOn会使用构造函数进行初始化,然后在使用其他方 法。 HColumnDescriptor关系:org.apache.hadoop.HBase.HColumnDescriptor作用:维护着关于列族的信息,例如版本号,压缩设置等。它通常在创建 表或者为表添加列族的时候使用。列族被创建后不能直接修改,只能通过删除 然后重新创建的方式。列族被删除的时候,列族里面的数据也会同时被删除。它的返回值、函数和描述信息如表4-11所示。表4-11返回值、函数和描达段信息返回值函数描述bytegetName()获取列族
10、的名字bytegetValue(byte key)获取对应的属性的值voidsetvalue(String key,String value)设置对应属性的值用法用例:HTableDescriptor htd = new HTableDescriptor(tablename);HColumnDescriptor col = new HCoIUmnDeSCriPtor(content:);htd.addFamily(col);此例添加了一个content的列族。 HTable关系:org.apache.hadoop.HBase.client.HTable作用:可以用来和HBaSe的表直接通信。此
11、方法对于更新操作来说是非线 程安全的。它的返回值、函数和描述信息如表4-12所示。表4-12返回值、函数和描述信息返回值函数描述voidcheckAdnPut(byterow, b yte family,自动的检查row/family/qu alifier是否与给定的值匹 配voidclose()释放所有的资源或挂起 内部缓冲区中的更新Booleanexists(Get get)检查Get实例所指定的值 是否存在于HTable的列中Resultget(Get get)获取指定行的某些单元 格所对应的值bytegetEndKeys()获取当前一打开的表每 个区域的结束键值ResultScanne
12、rgetScanner(byte family)获取当前给定列族的scan ner实例HTableDescriptogetTableDescriptor()获取当前表的HTableDes criptor 实例bytegetTableName()获取表名static booleanisTableEnabled(HBaseCon figuration conf,String tabi eName)检查表是否有效voidput(Put put)向表中添加值用法用例:HTable table = new HTable(conf,Bytes.toBytes(tablename);ResuItScanne
13、r scanner = table.getScanner(family);PUt关系:org.apache.hadoop.HBasexlientPut作用:用来对单个行执行添加操作它的返回值、函数和描述信息如表4-13所示。图表4-13返回值、函数和描述信息返回值函数描述Putadd(byte family, byte qualifier, byte value)将指定的列和对应的值 添加到Put实例中Putadd(byte family, byte qualifier, long tszbyte v alue)将制定的列和对应的值 及时间戳添加到Put实例 中bytelJgetRow()获取
14、PUt实例的行RowLockgetRowLock()获取Put实例的行锁longgetTimeStamp()获取Put实例的时间戳booleanisEmpty()检查familyMap是否为空PutsetTimeStamp(long timeS tamp)设置Put实例的时间戳用法用例:HTable table = new HTable(conf,Bytes.toBytes(tablename); Put p = new PUt(brow);为指定行创建一个Put操作 p.add(family,qualifier,value);table.put(p);Get关系:org.apache.hadoop.HBase.client.Get 作用:用来获取单个行的相关信息它的返回值、函数和描述信息如图表414所示。表4-14返回值、函数和描述信息返回值函数描述GetaddColumn(byte family, byte qualifier)获取指定列族和列修饰 符对应的列GetaddFamily(byte family)通过指定的列族获取其 对应列的所有列GetsetTimeRange(long minSt amp,long maxStamp)获取指定取件的列的版