欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

HBase之Java API 博客分类: 技术总结NOSql HBaseJavaAPI 

程序员文章站 2024-03-14 16:17:40
...

Java API应用

  1. Configuration

    在使用Java API时,Client端需要知道HBase的配置环境,如存储地址,zookeeper等信息。这些信息通过Configuration对象来封装,可通过如下代码构建该对象:

    Configuration config=HBaseConfiguration.create();

    在调用HBaseConfiguration.create()方法时,HBase首先会在classpath下查找hbase-site.xml文件,将里面的信息解析出来封装到Configuration对象中,如果hbase-site.xml文件不存在,则使用默认的hbase-core.xml文件。

    除了将hbase-site.xml放到classpath下,开发人员还可通过config.set(name, value)方法来手工构建Configuration对象:

    Configuration.set(String name, String value);

  2. HBaseAdmin

    HBaseAdmin用于创建数据库表格,并管理表格的元数据信息,通过如下方法构建:

    HBaseAdmin admin=new HBaseAdmin(config);

    常用方法如列表所示:

    Table 1. HBaseAdmin常用方法

    方法名 方法描述
    addColumn(tableName,column) 为表格添加栏位
    deleteColumn(tableName,column) 删除指定栏位
    balanceSwitch(boolean) 是否启用负载均衡
    createTable(HTableDescriptor desc) 创建表格
    deleteTable(tableName) 删除表格
    tableExists(tableName) 判断表格是否存在

    Example 1. 创建表格

    HBaseAdmin admin=new HBaseAdmin(config);  
    If(!admin.tableExists(“test”)){
        HTableDescriptor tableDesc=new HTableDescriptor(“test”);HBase之Java API
                
        
        博客分类: 技术总结NOSql HBaseJavaAPI 
        HColumnDescriptor cf=new HColumnDescriptor(“cf”);
        tableDesc.addFamily(cf);HBase之Java API
                
        
        博客分类: 技术总结NOSql HBaseJavaAPI 
        admin.createTable(tableDesc);
    }					
    					

    HBase之Java API
            
    
    博客分类: 技术总结NOSql HBaseJavaAPI 

    指定表格名称为test。

    HBase之Java API
            
    
    博客分类: 技术总结NOSql HBaseJavaAPI 

    为表格创建ColumnFamily,名称为cf。

  3. HTable

    在HBase中,HTable封装表格对象,对表格的增删改查操作主要通过它来完成,构造方法如下:

    HTable table=new HTable(config,tableName);

    在构建多个HTable对象时,HBase推荐所有的HTable使用同一个Configuration。这样,HTable之间便可共享HConnection对象、zookeeper信息以及Region地址的缓存信息。

    Example 2. Get操作

    Get get=new Get(rowKey);
    Result res=table.get(get);
    				

    Example 3. Put操作

    Put put=new Put(rowKey);
    put.add(columnFamily,column,value);
    table.put(put);
    注:在HBase中,实体的新增和更新都是通过Put操作来实现。
    				

    Example 4. Delete操作

    Delete delete=new Delete();
    table.delete(delete);
    				

    Example 5. Scan操作

    Scan scan=new Scan( );  
    scan.addColumn(columnFamily,column);HBase之Java API
                
        
        博客分类: 技术总结NOSql HBaseJavaAPI 
    scan.setReversed(false); HBase之Java API
                
        
        博客分类: 技术总结NOSql HBaseJavaAPI 
    scan.setBatch(10); HBase之Java API
                
        
        博客分类: 技术总结NOSql HBaseJavaAPI 
    scan.setIsolationLevel(IsolationLevel.READ_COMMITTED); HBase之Java API
                
        
        博客分类: 技术总结NOSql HBaseJavaAPI 
    scan.setRaw(false); HBase之Java API
                
        
        博客分类: 技术总结NOSql HBaseJavaAPI 
    scan.setSmall(true); HBase之Java API
                
        
        博客分类: 技术总结NOSql HBaseJavaAPI 
    SingleColumnValueFilter filter=new SingleColumnValueFilter(  
            columnFamily,column,HBase之Java API
                
        
        博客分类: 技术总结NOSql HBaseJavaAPI   
            CompareOp.EQUAL,valueHBase之Java API
                
        
        博客分类: 技术总结NOSql HBaseJavaAPI   
    );
    scan.setFilter(filter);  
    ResultScanner scanner=table.getScanner(scan);HBase之Java API
                
        
        博客分类: 技术总结NOSql HBaseJavaAPI 
    Iterator<Result> res=scanner.iterator( );HBase之Java API
                
        
        博客分类: 技术总结NOSql HBaseJavaAPI 
    					

    HBase之Java API
            
    
    博客分类: 技术总结NOSql HBaseJavaAPI 

    指定查询要返回的column。

    HBase之Java API
            
    
    博客分类: 技术总结NOSql HBaseJavaAPI 

    是否为倒叙查询,可用于获取最后一条记录。

    HBase之Java API
            
    
    博客分类: 技术总结NOSql HBaseJavaAPI 

    每次执行ResultScanner.next()返回多少条记录。

    HBase之Java API
            
    
    博客分类: 技术总结NOSql HBaseJavaAPI 

    设置隔离级别,如果参数值为READ_UNCOMMITTED表示未提交的数据也一并读取,此时违背了读一致性(具体参考读写一致性章节)。

    HBase之Java API
            
    
    博客分类: 技术总结NOSql HBaseJavaAPI 

    是否返回已经被删除的记录。

    HBase之Java API
            
    
    博客分类: 技术总结NOSql HBaseJavaAPI 

    通常情况下,如果要检索的数据只存在于一个Block中,认为其是smallScan,这时将采用pread方式查询,而不是seek+read。

    HBase之Java API
            
    
    博客分类: 技术总结NOSql HBaseJavaAPI 

    指定要过滤的column。

    HBase之Java API
            
    
    博客分类: 技术总结NOSql HBaseJavaAPI 

    指定过滤条件。

    HBase之Java API
            
    
    博客分类: 技术总结NOSql HBaseJavaAPI 

    执行扫描查找。

    HBase之Java API
            
    
    博客分类: 技术总结NOSql HBaseJavaAPI 

    返回查询遍历器。


    注:更多的过滤器信息请查看org.apache.hadoop.hbase.filter包。

    Example 6. 遍历Result结果集

    NavigableMap<byte[], NavigableMap<byte[], NavigableMap<Long, byte[]>>> maps = res.getMap();
    for(byte[] family:maps.keySet()){ HBase之Java API
                
        
        博客分类: 技术总结NOSql HBaseJavaAPI 
        System.out.println("columnFamily:"+new String(family));
        for(byte[] column:maps.get(family).keySet()){ HBase之Java API
                
        
        博客分类: 技术总结NOSql HBaseJavaAPI 
            System.out.print("column:"+new String(column)+"; ");
            for(Long time:maps.get(family).get(column).keySet()){ HBase之Java API
                
        
        博客分类: 技术总结NOSql HBaseJavaAPI 
                System.out.println("value:"+new String(maps.get(family).get(column).get(time)));
            }
        }
    }
    					

    HBase之Java API
            
    
    博客分类: 技术总结NOSql HBaseJavaAPI 

    结果集用Map封装,最外层的key为columnFamily;

    HBase之Java API
            
    
    博客分类: 技术总结NOSql HBaseJavaAPI 

    第二层key为column;

    HBase之Java API
            
    
    博客分类: 技术总结NOSql HBaseJavaAPI 

    第三层key为时间戳信息,value为column值。

     

    http://blog.csdn.net/javaman_chen/article/details/7220216

相关标签: HBase Java API