Hbase 预分区建表

![](https://upload-images.jianshu.io/upload_images/9028759-735db08803d91f7c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

```

    private static Admin admin = null;

    private static final String user = "admin/admin@DEMO.COM";

    private static final String keyPath = "/etc/security/keytabs/admin.keytab";

    static {

        System.setProperty("java.security.krb5.conf", "/etc/krb5.conf");

        System.setProperty("sun.security.krb5.debug", "false");

        Configuration conf = new Configuration();

        conf.addResource("hbase-site.xml");

        conf.set("hbase.zookeeper.quorum", "storm4.demo.com,storm2.demo.com,storm3.demo.com");

        conf.set(HConstants.ZOOKEEPER_CLIENT_PORT, "2181");

        conf.set(HConstants.ZOOKEEPER_ZNODE_PARENT, "/hbase-secure");

        conf.set("hbase.security.authentication", "kerberos");

        conf.set("hadoop.security.authentication", "kerberos");

        UserGroupInformation.setConfiguration(conf);

        try {

            UserGroupInformation.loginUserFromKeytab(user, keyPath);

        } catch (IOException e) {

            e.printStackTrace();

        }

        Connection connection= null;

        try {

            connection = ConnectionFactory.createConnection(conf);

        } catch (IOException e) {

            e.printStackTrace();

        }

        try {

            admin = connection.getAdmin();

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

    public synchronized static Table getTable(String tableName) {

        try {

            return TABLE_MAP.get(tableName);

        } catch (ExecutionException e) {

            e.printStackTrace();

        }

        return null;

    }

    public synchronized static void createTable(String tableName) throws HBaseException {

        TableName table = TableName.valueOf(tableName);

        TableDescriptorBuilder tableDesc = TableDescriptorBuilder.newBuilder(table)

        tableDesc.setValue(TableDescriptorBuilder.SPLIT_POLICY, classOf[DelimitedKeyPrefixRegionSplitPolicy].getName)

        tableDesc.setValue(DelimitedKeyPrefixRegionSplitPolicy.DELIMITER_KEY, "|") //以|作为分区前缀

        ColumnFamilyDescriptor extCF = ColumnFamilyDescriptorBuilder.newBuilder("ext".getBytes()).setTimeToLive("90 DAYS").build();

        ColumnFamilyDescriptor deviceCF = ColumnFamilyDescriptorBuilder.newBuilder("device".getBytes()).setTimeToLive("90 DAYS").build();

        ColumnFamilyDescriptor locationCF = ColumnFamilyDescriptorBuilder.newBuilder("location".getBytes()).setTimeToLive("90 DAYS").build();

        tableDesc.setColumnFamilies(Arrays.asList(extCF, locationCF, deviceCF));

        try {

            val regionServers = 8

    val splitKeys = (0 until 256 by regionServers).map(Integer.toHexString).map(i => s"0$i".takeRight(2)).map(Bytes.toBytes).toArray

            admin.createTable(tableDesc.build(), splitKeys); //预分区

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

    public static void main(String[] args) {

        try {

            createTable("DSP_LOG_TABLE");

        } catch (HBaseException e) {

            e.printStackTrace();

        }

    }

```

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 2019-05-24 哈尔滨第380期利他二组简书作者 姓名:周翔 扬州市方圆建筑工程有限公司 【日精进打卡第36...
    香蕉香蕉_2917阅读 239评论 0 0
  • 2019-05-24 哈尔滨第380期利他二组简书作者 姓名:周翔 扬州市方圆建筑工程有限公司 【日精进打卡第36...
    香蕉香蕉_2917阅读 91评论 0 0
  • 大家好 给大家介绍一下 我就是传说中的老区溜达鸡 ↓↓↓ 我们溜达鸡家族在老区田园散养 以山为家、以树为伴 每日溜...
    c716a654db64阅读 964评论 0 0
  • 今天周日梦和老公回老家了就剩我自己了,早上五点多醒了看外面下雨了,真是讨厌人家今天要去练车准备考试,好不容易...
    冰是睡着的水_6af7阅读 120评论 0 1
  • 今天突然记清楚了一个画面,过去这个画面模糊,我看不清里面的背景也想不起来它到底发生在什么时候什么地方,更多的是一种...
    淡墨70阅读 394评论 3 3

友情链接更多精彩内容