![HBase总结(十一)hbase Java API 介绍及使用演示样例 HBase总结(十一)hbase Java API 介绍及使用演示样例](https://image.shishitao.com:8440/aHR0cHM6Ly9ia3FzaW1nLmlrYWZhbi5jb20vdXBsb2FkL2NoYXRncHQtcy5wbmc%2FIQ%3D%3D.png?!?w=700&webp=1)
几个相关类与HBase数据模型之间的相应关系
java类 | HBase数据模型 |
HBaseAdmin | 数据库(DataBase) |
HBaseConfiguration | |
HTable | 表(Table) |
HTableDescriptor | 列族(Column Family) |
Put | 列修饰符(Column Qualifier) |
Get | |
Scanner |
一、HBaseConfiguration
关系:org.apache.hadoop.hbase.HBaseConfiguration
作用:对HBase进行配置
返回值 | 函数 | 描写叙述 |
void | addResource(Path file) | 通过给定的路径所指的文件来加入资源 |
void | clear() | 清空全部已设置的属性 |
string | get(String name) | 获取属性名相应的值 |
String | getBoolean(String name, boolean defaultValue) | 获取为boolean类型的属性值,假设其属性值类型部位boolean,则返回默认属性值 |
void | set(String name, String value) | 通过属性名来设置值 |
void | setBoolean(String name, boolean value) | 设置boolean类型的属性值 |
使用方法演示样例:
- HBaseConfiguration hconfig = new HBaseConfiguration();
- hconfig.set("hbase.zookeeper.property.clientPort","2181");
复制代码
该方法设置了"hbase.zookeeper.property.clientPort"的port号为2181。
普通情况下,HBaseConfiguration会使用构造函数进行初始化,然后在使用其它方法。
二、HBaseAdmin
关系:org.apache.hadoop.hbase.client.HBaseAdmin
作用:提供了一个接口来管理HBase数据库的表信息。它提供的方法包含:创建表,删除表,列出表项,使表有效或无效,以及加入或删除表列族成员等。
返回值 | 函数 | 描写叙述 |
void | addColumn(String tableName, HColumnDescriptor column) | 向一个已经存在的表加入咧 |
checkHBaseAvailable(HBaseConfiguration conf) | 静态函数。查看HBase是否处于执行状态 | |
createTable(HTableDescriptor desc) | 创建一个表。同步操作 | |
deleteTable(byte[] tableName) | 删除一个已经存在的表 | |
enableTable(byte[] tableName) | 使表处于有效状态 | |
disableTable(byte[] tableName) | 使表处于无效状态 | |
HTableDescriptor[] | listTables() | 列出全部用户控件表项 |
void | modifyTable(byte[] tableName, HTableDescriptor htd) | 改动表的模式,是异步的操作,可能须要花费一定的时间 |
boolean | tableExists(String tableName) | 检查表是否存在 |
使用方法演示样例:
- HBaseAdmin admin = new HBaseAdmin(config);
- admin.disableTable("tablename")
复制代码
三、HTableDescriptor
关系:org.apache.hadoop.hbase.HTableDescriptor
作用:包括了表的名字极其相应表的列族
返回值 | 函数 | 描写叙述 |
void | addFamily(HColumnDescriptor) | 加入一个列族 |
HColumnDescriptor | removeFamily(byte[] column) | 移除一个列族 |
byte[] | getName() | 获取表的名字 |
byte[] | getValue(byte[] key) | 获取属性的值 |
void | setValue(String key, String value) | 设置属性的值 |
使用方法演示样例:
- HTableDescriptor htd = new HTableDescriptor(table);
- htd.addFamily(new HcolumnDescriptor("family"));
复制代码
在上述样例中。通过一个HColumnDescriptor实例。为HTableDescriptor加入了一个列族:family
四、HColumnDescriptor
关系:org.apache.hadoop.hbase.HColumnDescriptor
作用:维护着关于列族的信息,比如版本,压缩设置等。
它通常在创建表或者为表加入列族的时候使用。列族被创建后不能直接改动,仅仅能通过删除然后又一次创建的方式。
列族被删除的时候。列族里面的数据也会同一时候被删除。
返回值 | 函数 | 描写叙述 |
byte[] | getName() | 获取列族的名字 |
byte[] | getValue(byte[] key) | 获取相应的属性的值 |
void | setValue(String key, String value) | 设置相应属性的值 |
使用方法演示样例:
- HTableDescriptor htd = new HTableDescriptor(tablename);
- HColumnDescriptor col = new HColumnDescriptor("content:");
- htd.addFamily(col);
复制代码
此例加入了一个content的列族
五、HTable
关系:org.apache.hadoop.hbase.client.HTable
作用:能够用来和HBase表直接通信。此方法对于更新操作来说是非线程安全的。
返回值 | 函数 | 描写叙述 |
void | checkAdnPut(byte[] row, byte[] family, byte[] qualifier, byte[] value, Put put | 自己主动的检查row/family/qualifier是否与给定的值匹配 |
void | close() | 释放全部的资源或挂起内部缓冲区中的更新 |
Boolean | exists(Get get) | 检查Get实例所指定的值是否存在于HTable的列中 |
Result | get(Get get) | 获取指定行的某些单元格所相应的值 |
byte[][] | getEndKeys() | 获取当前一打开的表每一个区域的结束键值 |
ResultScanner | getScanner(byte[] family) | 获取当前给定列族的scanner实例 |
HTableDescriptor | getTableDescriptor() | 获取当前表的HTableDescriptor实例 |
byte[] | getTableName() | 获取表名 |
static boolean | isTableEnabled(HBaseConfiguration conf, String tableName) | 检查表是否有效 |
void | put(Put put) | 向表中加入值 |
使用方法演示样例:
- HTable table = new HTable(conf, Bytes.toBytes(tablename));
- ResultScanner scanner = table.getScanner(family);
复制代码
六、Put
关系:org.apache.hadoop.hbase.client.Put
作用:用来对单个行运行加入操作
返回值 | 函数 | 描写叙述 |
Put | add(byte[] family, byte[] qualifier, byte[] value) | 将指定的列和相应的值加入到Put实例中 |
Put | add(byte[] family, byte[] qualifier, long ts, byte[] value) | 将指定的列和相应的值及时间戳加入到Put实例中 |
byte[] | getRow() | 获取Put实例的行 |
RowLock | getRowLock() | 获取Put实例的行锁 |
long | getTimeStamp() | 获取Put实例的时间戳 |
boolean | isEmpty() | 检查familyMap是否为空 |
Put | setTimeStamp(long timeStamp) | 设置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
作用:用来获取单个行的相关信息
返回值 | 函数 | 描写叙述 |
Get | addColumn(byte[] family, byte[] qualifier) | 获取指定列族和列修饰符相应的列 |
Get | addFamily(byte[] family) | 通过指定的列族获取其相应列的全部列 |
Get | setTimeRange(long minStamp,long maxStamp) | 获取指定取件的列的版本 |
Get | setFilter(Filter filter) | 当运行Get操作时设置server端的过滤器 |
使用方法演示样例:
- HTable table = new HTable(conf, Bytes.toBytes(tablename));
- Get g = new Get(Bytes.toBytes(row));
复制代码
八、Result