hbase 表的创建和删除等操作

栏目: java

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.TableName;

import org.apache.hadoop.hbase.client.HBaseAdmin;

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.slf4j.Logger;

import org.slf4j.LoggerFactory;

public class HbaseInit {

    static Configuration conf;

    public static final byte[] FAMILY = Bytes.toBytes("kezesong_cf");

    public static final String OMMS_TABLE="kezesong_table";

    // 数据保存一年的时间

    private static final int TTL = 60 * 60 * 24 * 365;    

    private static final Logger LOG = LoggerFactory.getLogger(HbaseInit.class);

    static {

        conf = HBaseConfiguration.create();

    }

    public static void main(String[] args) {

        initTable();

    }

    public static void initTable()

    {

        try {

            LOG.info("start creating table.....");

            deleteTable(OMMS_TABLE);

            createTable(OMMS_TABLE,getSplits());

            LOG.info("end creating table.....");

        } catch (Exception e) {

            LOG.warn("catch an exception...",e);

        }

    }

    public static void testSplitRegion() {

        byte [][] splits = new byte[][] {Bytes.toBytes("B"),Bytes.toBytes("C"),Bytes.toBytes("D")};

        try {

            createTable("test_splists",splits);

        } catch (Exception e) {

            // TODO Auto-generated catch block

            LOG.warn("catch an exception...",e);

        }

    }

    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;

    }

    /**

     * 删除一个表

     * @param tableName

     *            删除的表名

     */

    public static void deleteTable(String tableName) throws Exception {

        HBaseAdmin admin = new HBaseAdmin(conf);

        if (admin.tableExists(tableName)) {

            admin.disableTable(tableName);// 禁用表

            admin.deleteTable(tableName);// 删除表

            LOG.info("删除表成功!");

        } else {

            LOG.info("删除的表不存在!");

        }

        admin.close();

    }

    public static void createTable(String tableName, int regionNum) throws Exception {

        HBaseAdmin admin = new HBaseAdmin(conf);

        if (admin.tableExists(tableName)) {

            LOG.info(tableName + "表已存在!" );

        } else {

            // 新的api

            HTableDescriptor desc = new HTableDescriptor(TableName.valueOf(tableName));

            HColumnDescriptor hd = new HColumnDescriptor(FAMILY);

            hd.setMaxVersions(1); // 数据最大的版本保存数

            //hd.setBlocksize(65536); // 设置数据的块大小

            hd.setBloomFilterType(BloomType.NONE); // 指定是否使用BloomFilter,可提高随机查询效率。

            hd.setDataBlockEncoding(DataBlockEncoding.NONE);

            hd.setCompressionType(Algorithm.GZ);// 设置压缩方式 压缩方式可能会引起中文乱码

            desc.addFamily(hd);

            short start = (short) (32767 / regionNum);

            short end = (short) (32767 - start);

            admin.createTable(desc, Bytes.toBytes(start), Bytes.toBytes(end), regionNum);

            //admin.createTable(desc);

            LOG.info(tableName + ": 建表成功!");

        }

        admin.close();// 关闭释放资源

    }

    public static void createTable(String tableName, byte [][] splits) throws Exception {

        HBaseAdmin admin = new HBaseAdmin(conf);

        if (admin.tableExists(tableName)) {

            LOG.info(tableName + "表已存在!" );

        } else {

            // 新的api

            HTableDescriptor desc = new HTableDescriptor(TableName.valueOf(tableName));

            HColumnDescriptor hd = new HColumnDescriptor(FAMILY);

            hd.setMaxVersions(1); // 数据最大的版本保存数

            hd.setTimeToLive(TTL); // 一年的时间

            hd.setBloomFilterType(BloomType.NONE); // 指定是否使用BloomFilter,可提高随机查询效率。

            hd.setDataBlockEncoding(DataBlockEncoding.NONE);

            hd.setCompressionType(Algorithm.GZ);// 设置压缩方式 压缩方式可能会引起中文乱码

            desc.addFamily(hd);

            admin.createTable(desc,splits);

            //admin.createTable(desc);

            LOG.info(tableName + ": 建表成功!");

        }

        admin.close();// 关闭释放资源

    }

    public static void createTable(String tableName) throws Exception {

        HBaseAdmin admin = new HBaseAdmin(conf);

        if (admin.tableExists(tableName)) {

            LOG.info(tableName + "表已存在!" );

        } else {

            // 新的api

            HTableDescriptor desc = new HTableDescriptor(TableName.valueOf(tableName));

            HColumnDescriptor hd = new HColumnDescriptor(FAMILY);

            hd.setMaxVersions(1); // 数据最大的版本保存数

            hd.setTimeToLive(TTL); // 一年的时间

            hd.setBloomFilterType(BloomType.NONE); // 指定是否使用BloomFilter,可提高随机查询效率。

            hd.setDataBlockEncoding(DataBlockEncoding.NONE);

            hd.setCompressionType(Algorithm.GZ);// 设置压缩方式 压缩方式可能会引起中文乱码

            desc.addFamily(hd);

            admin.createTable(desc);

            //admin.createTable(desc);

            LOG.info(tableName + ": 建表成功!");

        }

        admin.close();// 关闭释放资源

    }

}

                       





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

关键字

最近访客