java hbase 基本操作

hbase1.2.6
结构图


package com.xuteng;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.apache.commons.io.filefilter.PrefixFileFilter;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseClusterManager;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.NamespaceDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.filter.BinaryComparator;
import org.apache.hadoop.hbase.filter.ByteArrayComparable;
import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;
import org.apache.hadoop.hbase.filter.Filter;
import org.apache.hadoop.hbase.filter.PrefixFilter;
import org.apache.hadoop.hbase.filter.RowFilter;
import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;
import org.apache.hadoop.hbase.filter.SubstringComparator;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.util.HBaseConfTool;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class HbaseDao {
    static String zkip="192.168.2.1:2181";//zookepper地址
     Connection createConnection;
     Admin admin ;
     Table table2 ;
    @Before
    public  void initConnection() throws IOException{
        Configuration conf = HBaseConfiguration.create();
        conf.set("hbase.zookeeper.quorum",zkip);
        createConnection = ConnectionFactory.createConnection(conf);
         admin = createConnection.getAdmin();
        TableName table= TableName.valueOf("t_buy_cart");
         table2 = createConnection.getTable(table);
    }
    @After
    public void closeConnection() throws IOException{
        admin.close();
    }
    @Test
    public void delete() throws IOException{

        Delete delete=new Delete( Bytes.toBytes("user_000"));
        delete.addColumn(Bytes.toBytes("product"), Bytes.toBytes("product_num"));
        table2.delete(delete);
    }
    @Test
    public void update() throws IOException{

        Put put=new Put(Bytes.toBytes("user_04"));//行键
        put.addColumn(Bytes.toBytes("product"), Bytes.toBytes("product_id_2"), Bytes.toBytes("pd_002_008"));//插入一个商品id
        table2.put(put);
    }
    @Test
    public void get() throws IOException{

        Get get=new Get(Bytes.toBytes("user_04"));
        get.addColumn(Bytes.toBytes("product"), Bytes.toBytes("product_id_2"));
        get.addColumn(Bytes.toBytes("product"), Bytes.toBytes("product_num"));
        get.addColumn(Bytes.toBytes("recommend"), Bytes.toBytes("product_id"));
        Result result = table2.get(get);
        byte[] p1=result.getValue(Bytes.toBytes("product"), Bytes.toBytes("product_id_2"));
        byte[] n2 = result.getValue(Bytes.toBytes("product"), Bytes.toBytes("product_num"));
        byte[] r3 = result.getValue(Bytes.toBytes("recommend"), Bytes.toBytes("product_id"));
        System.out.println(Bytes.toString(p1));
        System.out.println(Bytes.toInt(n2));
        System.out.println(Bytes.toString(r3));
    }
    @Test
    public void scan() throws IOException{
        Scan scan = new Scan(Bytes.toBytes("user_03"),Bytes.toBytes("user_05"));
        ResultScanner scanner = table2.getScanner(scan);
        Iterator<Result> iterator = scanner.iterator();
        while(iterator.hasNext()){
            Result result = iterator.next();
            byte[] p1=result.getValue(Bytes.toBytes("recommend"), Bytes.toBytes("product_id"));
            byte[] p2 = result.getValue(Bytes.toBytes("recommend"), Bytes.toBytes("product_id"));
            System.out.println(Bytes.toString(p1));
            System.out.println(Bytes.toString(p2));
        }
    }
    /**
     * 这个方法多个查询条件进行查询
     * @throws IOException 
     */
    @Test
    public void filter() throws IOException{
        Scan scan=new Scan(Bytes.toBytes("user_01"),Bytes.toBytes("user_05"));
        scan.addFamily(Bytes.toBytes("product"));//指定scan扫描的列族
        //实例一
        Filter filter=new PrefixFilter(Bytes.toBytes("user"));//前缀过滤器满足指定前缀行

        //实例二
        ByteArrayComparable rowComparator=new BinaryComparator(Bytes.toBytes("user_01"));//行条件过滤器,按照指定行键查找数据
        RowFilter rowFilter = new RowFilter(CompareOp.EQUAL, rowComparator);

        //实例三
        SubstringComparator substringCompator = new SubstringComparator("_003_");
        //列查找过滤器,模糊匹配指定数据的列,注意如果所查询数据的列不是指定的列,该数据也会返回,同样的列族也是这个道理
        SingleColumnValueFilter singleColumnValueFilter = new SingleColumnValueFilter(Bytes.toBytes("product"), Bytes.toBytes("product_id"), CompareOp.EQUAL,substringCompator);
        //将不符合列条件的数据也进行过滤
        singleColumnValueFilter.setFilterIfMissing(true);

        scan.setFilter(singleColumnValueFilter);
        ResultScanner scanner = table2.getScanner(scan);    
        Iterator<Result> iterator = scanner.iterator();
        while(iterator.hasNext()){

            System.out.println(iterator.next());
        }
    }

    @Test
    public void putList() throws IOException{


        List<Put> pusList=new ArrayList<Put>();

        Put put=new Put(Bytes.toBytes("user_04"));//行键
        put.addColumn(Bytes.toBytes("product"), Bytes.toBytes("product_id_2"), Bytes.toBytes("pd_002_007"));//插入一个商品id
        put.addColumn(Bytes.toBytes("product"), Bytes.toBytes("product_num"), Bytes.toBytes(4));//插入一个商品数量
        put.addColumn(Bytes.toBytes("recommend"), Bytes.toBytes("product_id"), Bytes.toBytes("pd_002_008"));//插入一个推荐商品数量

        Put put2=new Put(Bytes.toBytes("user_05"));//行键
        put2.addColumn(Bytes.toBytes("product"), Bytes.toBytes("product_id_3"), Bytes.toBytes("pd_003_007"));//插入一个商品id
        put2.addColumn(Bytes.toBytes("product"), Bytes.toBytes("product_num"), Bytes.toBytes(5));//插入一个商品数量
        put2.addColumn(Bytes.toBytes("recommend"), Bytes.toBytes("product_id"), Bytes.toBytes("pd_003_008"));//插入一个推荐商品数量


        pusList.add(put);
        pusList.add(put2);
        table2.put(pusList);

    }

    @Test
    public void put() throws IOException{

        Put put=new Put(Bytes.toBytes("user_00"));//行键
        put.addColumn(Bytes.toBytes("product"), Bytes.toBytes("product_id"), Bytes.toBytes("pd_001_007"));//插入一个商品id
        put.addColumn(Bytes.toBytes("product"), Bytes.toBytes("product_num"), Bytes.toBytes(5));//插入一个商品数量
        put.addColumn(Bytes.toBytes("recommend"), Bytes.toBytes("product_id"), Bytes.toBytes("pd_001_008"));//插入一个推荐商品数量

        table2.put(put); 

    }
    public static void main(String[] args) throws IOException {
        Configuration conf = HBaseConfiguration.create();

        conf.set("hbase.zookeeper.quorum",
                zkip);

        Connection createConnection = ConnectionFactory.createConnection(conf);
        Admin admin = createConnection.getAdmin();

/*      admin.createNamespace(NamespaceDescriptor.create("habase_java").build());
*/      TableName a=TableName.valueOf("t_buy_cart");
        HTableDescriptor hTableDescriptor =new HTableDescriptor(a);
        HColumnDescriptor family=new HColumnDescriptor("product");
        family.setMaxVersions(3);
        hTableDescriptor.addFamily(family);

        HColumnDescriptor recommend=new HColumnDescriptor("recommend");
        recommend.setMaxVersions(3);
        hTableDescriptor.addFamily(recommend);

        admin.createTable(hTableDescriptor);
        admin.close();

    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值