HBase - Java 客户端 | 那伊抹微笑

博文作者: 妳那伊抹微笑
csdn 博客地址: http://blog.csdn.net/u012185296
itdog8 地址链接 : http://www.itdog8.com/thread-196-1-1.html
博文标题:HBase - 列族定义 | 那伊抹微笑
个性签名: 世界上最遥远的距离不是天涯,也不是海角,而是我站在妳的面前,妳却感觉不到我的存在
技术方向: Flume+Kafka+Storm+Redis/Hbase+Hadoop+Hive+Mahout+Spark ... 云计算技术
转载声明: 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明,谢谢合作!
qq交流群:214293307  云计算之嫣然伊笑(期待与你一起学习,共同进步)



1 Java 客户端

1.1 简单的配置实例
public class TestHbaseJavaClient {
 public static Configuration _conf;
 public static HTable _hTable;
 public static HBaseAdmin _hBaseAdmin;
 
 @BeforeClass
 public static void beforeClass() throws IOException {
  _conf = HBaseConfiguration.create();
  _conf.set("hbase.zookeeper.quorum", "a234-198.hadoop.com,a234-197.hadoop.com,a234-196.hadoop.com");
  _hTable = new HTable(_conf, "test_1");
  _hBaseAdmin = new HBaseAdmin(_conf);
 }
 
 @Test
 public void test() {
  System.out.println("ok");
 }
}
1.2 表操作的入口类 HTable(数据操作)

1.2.1 CRUD 操作方法
// 增加 写入
public void put(final Put put)
public void put(final List<Put> puts)
public boolean checkAndPut(final byte [] row,   final byte [] family, final byte [] qualifier, final byte [] value,  final Put put)

// 删除
public void delete(final Delete delete)
public void delete(final List<Delete> deletes)
public boolean checkAndDelete(final byte [] row,    final byte [] family, final byte [] qualifier, final byte [] value,   final Delete delete)

// 查询
public Result get(final Get get)
public Result[] get(List<Get> gets)
public ResultScanner getScanner(final Scan scan)
public ResultScanner getScanner(byte [] family)
public ResultScanner getScanner(byte [] family, byte [] qualifier)

// 更新
public Result increment(final Increment increment)
public long incrementColumnValue(final byte [] row, final byte [] family,   final byte [] qualifier, final long amount)
public long incrementColumnValue(final byte [] row, final byte [] family,   final byte [] qualifier, final long amount, final boolean writeToWAL)
public long incrementColumnValue(final byte [] row, final byte [] family,   final byte [] qualifier, final long amount, final Durability durability)

// 是否存在
public boolean exists(final Get get)
public Boolean[] exists(final List<Get> gets)

1.2.2 获取元数据信息方法
public HRegionLocation getRegionLocation(final String row)
public HRegionLocation getRegionLocation(final byte [] row)
public HRegionLocation getRegionLocation(final byte [] row, boolean reload)
public NavigableMap<HRegionInfo, ServerName> getRegionLocations()
public Configuration getConfiguration()
public byte [][] getStartKeys()
public byte[][] getEndKeys()
public Pair<byte[][],byte[][]> getStartEndKeys()
public int getOperationTimeout()

1.2.3 获取状态信息方法
public boolean isAutoFlush()
public static boolean isTableEnabled(Configuration conf,   final TableName tableName)
public static boolean isTableEnabled(TableName tableName)

1.2.4 设置属性方法
public void setScannerCaching(int scannerCaching)
public void setAutoFlush(boolean autoFlush)
public void setAutoFlushTo(boolean autoFlush)
public void setAutoFlush(boolean autoFlush, boolean clearBufferOnFail)
public static void setRegionCachePrefetch(final byte[] tableName,   final boolean enable)
public void setOperationTimeout(int operationTimeout)
public void flushCommits()

1.3 管理入口类 HBaseAdmin(表操作,Region,负载均衡,分裂合并等)

1.3.1 表的创建、修改、删除方法
// 创建
public void createTable(HTableDescriptor desc)
public void createTable(final HTableDescriptor desc, byte [][] splitKeys)
public void createTable(HTableDescriptor desc, byte [] startKey,   byte [] endKey, int numRegions)
public void createTableAsync(  final HTableDescriptor desc, final byte [][] splitKeys)

// 删除
public void deleteTable(final TableName tableName)
public void deleteTable(final byte[] tableName)
public HTableDescriptor[] deleteTables(String regex)
public HTableDescriptor[] deleteTables(Pattern pattern)

// 修改
public void addColumn(final byte[] tableName, HColumnDescriptor column)
public void addColumn(final byte[] tableName, HColumnDescriptor column)
public void addColumn(final String tableName, HColumnDescriptor column)

public void modifyColumn(final String tableName, HColumnDescriptor descriptor)
public void modifyColumn(final byte[] tableName, HColumnDescriptor descriptor)

public void modifyTable(final String tableName, final HTableDescriptor htd)
public void modifyTable(final byte[] tableName, final HTableDescriptor htd)

1.3.2 表的状态信息方法
public void enableTable(final String tableName)
public void enableTableAsync(final String tableName)
public HTableDescriptor[] enableTables(String regex)

public void disableTable(final String tableName)
public void disableTableAsync(final String tableName)
public HTableDescriptor[] disableTables(String regex)

public ClusterStatus getClusterStatus()
public String[] getMasterCoprocessors()
public HTableDescriptor getTableDescriptor(final byte[] tableName)
public HTableDescriptor[] getTableDescriptors(List<String> names)
public List<HRegionInfo> getTableRegions(final TableName tableName)

public boolean isMasterRunning()
public boolean isTableEnabled(String tableName)
public boolean isTableDisabled(String tableName)
public boolean isTableAvailable(String tableName)

1.3.3 Region 相关操作方法
Region相关的操作方法属于 HBase 的高级特性部分,包括 Region 分配,负载均衡,Region的合并、分裂、移动等。

public void assign(final byte[] regionName)
public void unassign(final byte [] regionName, final boolean force)
public boolean balancer()
public void closeRegion(final String regionname, final String serverName)
public boolean closeRegionWithEncodedRegionName(final String encodedRegionName,   final String serverName)
public void compact(final String tableNameOrRegionName)
public void compact(String tableOrRegionName, String columnFamily)
public void majorCompact(final String tableNameOrRegionName)
public void majorCompact(final String tableNameOrRegionName,   final String columnFamily)
public void move(final byte [] encodedRegionName, final byte [] destServerName)
public void split(final String tableNameOrRegionName)
public void split(final byte[] tableNameOrRegionName)
public void split(final String tableNameOrRegionName,   final String splitPoint)
public void split(final byte[] tableNameOrRegionName,   final byte [] splitPoint)

1.3.4 快照的相关方法
public void snapshot(final String snapshotName,   final String tableName)
public void snapshot(final String snapshotName,    final TableName tableName,  SnapshotDescription.Type type)

1.3.5 其它操作方法 
public void flush(final String tableNameOrRegionName)
public HTableDescriptor[] listTables()
public HTableDescriptor[] listTables(String regex)

1.4 连接池类 HTablePool(已过时,应该使用 HConnection)
已过时,应该使用 HConnection

1.5 API 的使用

1.5.0 Junit beforeClass 初始化
public static Configuration _conf;
public static HTable _hTable;
public static HBaseAdmin _hBaseAdmin;
@BeforeClass
public static void beforeClass() throws IOException {
 _conf = HBaseConfiguration.create();
 _conf.set("hbase.zookeeper.quorum", "a234-198.hadoop.com,a234-197.hadoop.com,a234-196.hadoop.com");
 _hTable = new HTable(_conf, "yting_test_1");
 _hBaseAdmin = new HBaseAdmin(_conf);
}

1.5.1 创建表
@Test
 public void testCreateTable() throws IOException {
  // 表名为 yting_test_1
  HTableDescriptor tableDesc = new HTableDescriptor("yting_test_1");
  // 列族有 cf1 cf2
  tableDesc.addFamily(new HColumnDescriptor("cf1"));
  tableDesc.addFamily(new HColumnDescriptor("cf2"));
  _hBaseAdmin.createTable(tableDesc);
  System.out.println("successful.");
 }

1.5.2 删除表
@Test
 public void testDeleteTable() throws IOException {
  // 删除表 yting_test_1
  String tableName = "yting_test_1";
  _hBaseAdmin.disableTable(tableName);
  _hBaseAdmin.deleteTable(tableName);
  System.out.println("delete table successful.");
 }

1.5.3 插入数据
@Test
 public void testPut() throws IOException {
  String row = "row-001";
  Put put = new Put(Bytes.toBytes(row));
  put.add(Bytes.toBytes("cf1"), Bytes.toBytes("name"), Bytes.toBytes("yting"));
  put.add(Bytes.toBytes("cf1"), Bytes.toBytes("address"), Bytes.toBytes("beijing"));
  put.add(Bytes.toBytes("cf1"), Bytes.toBytes("age"), Bytes.toBytes("1129"));
  _hTable.put(put);
 
  System.out.println("put data successful.");
 }

1.5.4 查询数据

1.5.4.1 单行读(读取指定的 Rowkey)
@Test
 public void testGetRow() throws IOException {
  String row = "row-001";
  Get get = new Get(Bytes.toBytes(row));
  Result result = _hTable.get(get);
  System.out.println(result.toString());
  System.out.println("get row data successful.");
 }

1.5.4.2 扫描读(遍历全表或者某部分数据)
@Test
 public void testScan() throws IOException {
  Scan scan = new Scan();
  ResultScanner rs = _hTable.getScanner(scan);
  for(Result result : rs) {
   System.out.println(result.toString());
  }
  System.out.println("get row data successful.");
 }

1.5.4.3 删除数据
@Test
 public void testDelete() throws IOException {
  String row = "row-001";
  Delete delete = new Delete(Bytes.toBytes(row));
  _hTable.delete(delete);
  System.out.println("delete row successful.");
 }

1.5.4.4 过滤查询(HBase 高级特性 - Filter)
@Test
 public void testFilter() throws IOException {
  Filter filter = new PageFilter (1);
  Scan scan = new Scan();
  scan.setFilter(filter);
  ResultScanner rs = _hTable.getScanner(scan);
  for(Result result : rs) {
   System.out.println(result.toString());
  }
  System.out.println("get row data successful.");
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值