HbaseHelp 实例代码

栏目: java

pom 

                    

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 

  http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>com.kezesong</groupId>

    <artifactId>hbase20160721</artifactId>

    <version>0.0.1-SNAPSHOT</version>

    <properties>

        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    </properties>

    <dependencies>

        <dependency>

            <groupId>org.apache.hadoop</groupId>

            <artifactId>hadoop-common</artifactId>

            <version>2.7.1</version>

        </dependency>

        <dependency>

            <groupId>org.apache.hbase</groupId>

            <artifactId>hbase-common</artifactId>

            <version>1.1.3</version>

        </dependency>

        <dependency>

            <groupId>org.apache.hbase</groupId>

            <artifactId>hbase-client</artifactId>

            <version>1.1.3</version>

        </dependency>

    </dependencies>

</project>


/**
 * 
 */
/**
 * @author Administrator
 *
 */
package com.kezesong;
import java.io.IOException;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.KeyValue;
import org.apache.hadoop.hbase.TableName;
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.HTableInterface;
import org.apache.hadoop.hbase.client.HTablePool;
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.filter.CompareFilter.CompareOp;
import org.apache.hadoop.hbase.filter.Filter;
import org.apache.hadoop.hbase.filter.FilterList;
import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;
import org.apache.hadoop.hbase.io.compress.Compression.Algorithm;
import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;
import org.apache.hadoop.hbase.regionserver.BloomType;
import org.apache.hadoop.hbase.util.Bytes;
import org.mortbay.log.Log;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class HbaseHelper{
//    public static final byte[] FAMILY = Bytes.toBytes("kezesong_cf");
    public static final String HBASE_TABLE_NAME="tb_kezesong";
    // 数据保存一年的时间
    private static final int TTL = 60 * 60 * 24 * 365;  
    private static final Logger LOG = LoggerFactory.getLogger(HbaseHelper.class);
    static Configuration conf;
    static{
        conf = HBaseConfiguration.create();
    }
    public static void initTable()
    {
        try {
            LOG.info("start creating table.....");
            deleteTable(HBASE_TABLE_NAME);
            createTable(HBASE_TABLE_NAME,getSplits());
            LOG.info("end creating table.....");
        } catch (Exception e) {
            LOG.warn("catch an exception...",e);
        }
    }
    public static void createTable(String tableName, byte [][] splits) throws Exception {
        HBaseAdmin admin = new HBaseAdmin(conf);
        if (admin.tableExists(tableName)) {
            LOG.info(tableName + "表已存在!" );
        } else {          
            HTableDescriptor tableDesc = new HTableDescriptor(TableName.valueOf(tableName));
            HColumnDescriptor columnDesc = new HColumnDescriptor("column1".getBytes());
            columnDesc.setMaxVersions(1); // 数据最大的版本保存数
            columnDesc.setTimeToLive(TTL); // 一年的时间
            columnDesc.setBloomFilterType(BloomType.NONE); // 指定是否使用BloomFilter,可提高随机查询效率。
            columnDesc.setDataBlockEncoding(DataBlockEncoding.NONE);
            columnDesc.setCompressionType(Algorithm.GZ);// 设置压缩方式 压缩方式可能会引起中文乱码
            tableDesc.addFamily(columnDesc);
            columnDesc = new HColumnDescriptor("column2".getBytes());
            columnDesc.setMaxVersions(1); // 数据最大的版本保存数
            columnDesc.setTimeToLive(TTL); // 一年的时间
            columnDesc.setBloomFilterType(BloomType.NONE); // 指定是否使用BloomFilter,可提高随机查询效率。
            columnDesc.setDataBlockEncoding(DataBlockEncoding.NONE);
            columnDesc.setCompressionType(Algorithm.GZ);// 设置压缩方式 压缩方式可能会引起中文乱码
            tableDesc.addFamily(columnDesc);
            columnDesc = new HColumnDescriptor("column3".getBytes());
            columnDesc.setMaxVersions(1); // 数据最大的版本保存数
            columnDesc.setTimeToLive(TTL); // 一年的时间
            columnDesc.setBloomFilterType(BloomType.NONE); // 指定是否使用BloomFilter,可提高随机查询效率。
            columnDesc.setDataBlockEncoding(DataBlockEncoding.NONE);
            columnDesc.setCompressionType(Algorithm.GZ);// 设置压缩方式 压缩方式可能会引起中文乱码
            tableDesc.addFamily(columnDesc);
            admin.createTable(tableDesc,splits);
            LOG.info(tableName + ": 建表成功!");
        }
        admin.close();// 关闭释放资源
    }
    public static void deleteTable(String tableName) throws Exception{
        Log.info("==============start deleting table"+tableName);
        HBaseAdmin hAdmin = new HBaseAdmin(conf);
        TableName table = TableName.valueOf(tableName);
        if (hAdmin.tableExists(table)){            
            hAdmin.disableTable(table);
            hAdmin.deleteTable(table);
            Log.info("==============success deleting table"+tableName);
        }else{
            Log.info("==========delete table failed ,table is not exists");
        }
    }
    public static byte [][] getSplits() {
        byte [][] splits = new byte[][] {
                Bytes.toBytes("FST"),
                Bytes.toBytes("LSN-"),
                Bytes.toBytes("MRI-"),
                Bytes.toBytes("SNI-"),
                Bytes.toBytes("USER-")
        };
        return splits;
    }
    /**
     * 往表里插入数据
     * @throws Exception
     */
    public static void insertData() throws Exception{      
       System.out.println("======begin insert data========");
       HTablePool pool = new HTablePool(conf, 1000);
       HTableInterface tableInterface = pool.getTable(HBASE_TABLE_NAME);
       Put put = new Put("rowkey1".getBytes());    //一个PUT代表一行数据,再NEW一个PUT表示第二行数据,每行一个唯一的ROWKEY,此处rowkey为put构造方法中传入的值  
       put.addColumn("column1".getBytes(), null, "rowkey1_column2_value".getBytes());
       put.addColumn("column2".getBytes(), null, "rowkey1_column2_value".getBytes());
       put.addColumn("column3".getBytes(), null, "rowkey1_column3_value".getBytes());
       tableInterface.put(put);
       put = new Put("rowkey2".getBytes());    //一个PUT代表一行数据,再NEW一个PUT表示第二行数据,每行一个唯一的ROWKEY,此处rowkey为put构造方法中传入的值  
       put.addColumn("column1".getBytes(), null, "rowkey2_column2_value".getBytes());
       put.addColumn("column2".getBytes(), null, "rowkey2_column2_value".getBytes());
       put.addColumn("column3".getBytes(), null, "rowkey2_column2_value".getBytes());
       tableInterface.put(put);
    }
    public static void deleteRow(String tableName, String rowKey) throws Exception{
        HTable table = new HTable(conf,tableName);
        List list = new ArrayList();
        Delete delete = new Delete(rowKey.getBytes());
        list.add(delete);
        table.delete(list);
    }
    public static void QueryAll(String tableName) throws Exception{
        HTablePool pool = new HTablePool(conf,1000);
        HTableInterface tableInterface = pool.getTable(tableName);
        ResultScanner rs = tableInterface.getScanner(new Scan());
        for (Result result:rs){
            System.out.println("================获得的rowKey:"+new String(result.getRow()));
            for (KeyValue kv : result.raw()){
                System.out.println("===========列:"+ new String(kv.getFamily()) + "==值:"+ new String(kv.getValue()));
            }
        }
    }
    public static void QueryByRowKey(String tableName,String rowKey) throws Exception{
        HTablePool pool = new HTablePool(conf,1000);
        HTableInterface tableInterface = pool.getTable(tableName);
        Get scan =  new Get(rowKey.getBytes());
        Result  result = tableInterface.get(scan);
        System.out.println("====rowkey"+ new String(result.getRow()));
        for (KeyValue kv : result.raw()){
            System.out.println("==========列:"+ new String(kv.getFamily())+" ===值:"+ new String(kv.getValue()));
        }
    }
    public static void Query(String tableName) throws Exception{
        HTablePool pool = new HTablePool(conf,1000);
        HTableInterface tableInterface = pool.getTable(tableName);
        List<Filter> filters = new ArrayList<Filter>(); 
        Filter filter1 = new SingleColumnValueFilter("column3".getBytes(), null, CompareOp.EQUAL,"rowkey2_column2_value".getBytes());
        filters.add(filter1);
//        Filter filter2 = new SingleColumnValueFilter("column2".getBytes(), null, CompareOp.EQUAL,"rowkey2_column2_value".getBytes());
//        filters.add(filter2);
        FilterList filterList = new FilterList(filters);
        Scan scan = new Scan();
        scan.setFilter(filterList);
        ResultScanner resultScanner = tableInterface.getScanner(scan);
        for (Result rs : resultScanner){
            System.out.println("==========获得rowKey"+ new String(rs.getRow()));
            for (KeyValue kv : rs.raw()){
                System.out.println("==========列:"+ new String(kv.getFamily())+" ===值:"+ new String(kv.getValue()));
            }
        }
    }
    public static void main(String[] args) throws Exception {
//        initTable();
//        deleteTable(HBASE_TABLE_NAME);
//        insertData();
//        deleteRow(HBASE_TABLE_NAME,"rowkeyxxxooo");
//        QueryAll(HBASE_TABLE_NAME);
        System.out.println("*************************");
//        QueryByRowKey(HBASE_TABLE_NAME,"rowkey2");
        Query(HBASE_TABLE_NAME);
        System.out.println("====finished===========");
    }
}


<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- /** * Copyright 2010 The Apache Software Foundation * * Licensed to 
    the Apache Software Foundation (ASF) under one * or more contributor license 
    agreements. See the NOTICE file * distributed with this work for additional 
    information * regarding copyright ownership. The ASF licenses this file * 
    to you under the Apache License, Version 2.0 (the * "License"); you may not 
    use this file except in compliance * with the License. You may obtain a copy 
    of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless 
    required by applicable law or agreed to in writing, software * distributed 
    under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES 
    OR CONDITIONS OF ANY KIND, either express or implied. * See the License for 
    the specific language governing permissions and * limitations under the License. 
    */ -->
<configuration>
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>192.168.5.201</value>
    </property>
    <property>
        <name>hbase.zookeeper.property.clientPort</name>
        <value>2181</value>
    </property>
</configuration>






曾梦想仗剑走天涯 看一看世界的繁华 年少的心总有些轻狂 如今你四海为家 曾让你心疼的姑娘 如今已悄然无踪影 爱情总让你渴望又感到烦恼 曾让你遍体鳞伤 Dilililidilililidenda Dilililidilililidada Dilililidilililidada 走在勇往直前的路上 Dilililidilililidenda Dilililidilililidada Dilililidilililidada 有难过也有精彩 每一次难过的时候 就独自看一看大海 总想起身边走在路上的朋友 有多少正在疗伤 Dilililidilililidenda Dilililidilililidada Dilililidilililidada 不知多少孤独的夜晚 Dilililidilililidenda Dilililidilililidada Dilililidilililidada 从昨夜酒醉醒来 每一次难过的时候 就独自看一看大海 总想起身边走在路上的朋友 有多少正在醒来 让我们干了这杯酒 好男儿胸怀像大海 经历了人生百态世间的冷暖 这笑容温暖纯真 每一次难过的时候 就独自看一看大海 总想起身边走在路上的朋友 有多少正在醒来 让我们干了这杯酒 好男儿胸怀像大海 经历了人生百态世间的冷暖 这笑容温暖纯真

关键字

最近访客