HBASE—JAVA客户端(一)

创建一个maven项目

修改配置文件pom.xml,添加依赖

 <dependencies>
        <dependency>
        	<!--zookeeper版本-->
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.6</version>
        </dependency>
        <dependency>
        	<!--Hadoop版本-->
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-auth</artifactId>
            <version>3.1.1</version>
        </dependency>

        <dependency>
        	<!--hbase版本-->
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-client</artifactId>
            <version>2.2.5</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <version>3.1.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>3.1.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-server</artifactId>
            <version>2.2.5</version>
        </dependency>
        <!-- 使用mr程序操作hbase 数据的导入 -->
        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-mapreduce</artifactId>
            <version>2.2.5</version>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.5</version>
        </dependency>
        <!-- phoenix 凤凰 用来整合Hbase的工具 -->
        <!-- <dependency>
             <groupId>org.apache.phoenix</groupId>
             <artifactId>phoenix-core</artifactId>
             <version>5.0.0-HBase-2.0</version>
         </dependency>-->
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.5.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.6</version>
                <configuration>
                    <!-- get all project dependencies -->
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <!-- MainClass in mainfest make a executable jar -->
                    <archive>
                        <manifest>
                            <!--<mainClass>util.Microseer</mainClass> -->
                        </manifest>
                    </archive>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <!-- bind to the packaging phase -->
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

HbaseUtils

package com.doit.Utils;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
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.Table;

import java.io.IOException;

public class HbaseUtils {
    //获取Hbase的管理对象
    public static Admin getAdmin() throws IOException {
        Connection conn = getHbaseConnection();
        //DDL 和 TOOLS 有关的操作在admin对象中
        Admin admin = conn.getAdmin();
        return admin;
    }

    //获取表对象  可以对表进行DML语言操作
    public static Table getTable(String name) throws IOException {
        Connection conn = getHbaseConnection();
        Table table = conn.getTable(TableName.valueOf(name));
        return table;
    }

    //获取Hbase的连接对象
    public static Connection getHbaseConnection() throws IOException {
        Configuration conf = HBaseConfiguration.create();
        conf.set("hbase.zookeeper.quorum","linux01:2181,linux02:2181,linux03:2181");
        Connection conn = ConnectionFactory.createConnection(conf);
        return conn;
    }
}

获取系统中所有的表(list)

public class Demo02 {
    public static void main(String[] args) throws Exception {
        Admin admin = getAdmin();
        TableName[] tablename = admin.listTableNames(); // 获取系统中所有的表
//        TableName[] tablename = admin.listTableNamesByNamespace("default");
        for (TableName tableName : tablename) {
            byte[] name = tableName.getName();
            byte[] namespace = tableName.getNamespace(); //名称空间
            byte[] qualifier = tableName.getQualifier();
            System.out.println(new String(name));
            System.out.println(new String(namespace));
            System.out.println(new String(qualifier));
        }
        admin.close();
    }
}

创建表(一个列族)

/**
     * 创建表和一个列族
     * @throws IOException
     */
    private static void createTableWithOneColumnFamily() throws IOException {
        Admin admin = HbaseUtils.getAdmin();
        //建表  表名
        TableName tableName = TableName.valueOf("people");
        //表的描述构建器
        TableDescriptorBuilder builder = TableDescriptorBuilder.newBuilder(tableName);
        //列族的构建器
        ColumnFamilyDescriptorBuilder build = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("cf"));
        //构建列族描述器
        ColumnFamilyDescriptor cf = build.build();
        builder.setColumnFamily(cf);

        //表的描述器
        TableDescriptor tableBuild = builder.build();
        admin.createTable(tableBuild);
        admin.close();
    }

创建表(多个列族)

    /**
     * 创建表且添加多个列族
     * @throws IOException
     * @throws HBaseException
     */
    private static void createTableWithMoreCF() throws IOException, HBaseException {
        Admin admin = HbaseUtils.getAdmin();
        // 表的描述构建器
        TableDescriptorBuilder tableDescriptorBuilder = TableDescriptorBuilder.newBuilder(TableName.valueOf("em"));
        //列族的构建器
        ColumnFamilyDescriptorBuilder cfBuilder = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("info"));
        // 设置列族的属性
        cfBuilder.setTimeToLive("FOREVER");
        cfBuilder.setMaxVersions(3);
        ColumnFamilyDescriptor cf = cfBuilder.build();
        //创建extr列族
        ColumnFamilyDescriptorBuilder cf2Builder = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("extr"));
        ColumnFamilyDescriptor cf2 = cf2Builder.build();
        //创建cf3列族
        ColumnFamilyDescriptorBuilder cf3Builder = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("cf3"));
        ColumnFamilyDescriptor cf3 = cf3Builder.build();
        List<ColumnFamilyDescriptor> list = new ArrayList<>();
        list.add(cf);
        list.add(cf2);
        list.add(cf3);
        //添加列族
        tableDescriptorBuilder.setColumnFamilies(list);
        TableDescriptor build = tableDescriptorBuilder.build();
        admin.createTable(build);
        admin.close();
    }

创建预分region

private static void regionSplits() throws IOException {
        Admin admin = HbaseUtils.getAdmin();
        //表的描述器构建器
        TableDescriptorBuilder builder = TableDescriptorBuilder.newBuilder(TableName.valueOf("people"));
        //列族描述器构建器
        ColumnFamilyDescriptorBuilder cfBuilder = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("cf"));
        //列族描述器
        ColumnFamilyDescriptor cf = cfBuilder.build();
        builder.setColumnFamily(cf);
        //表的描述器
        TableDescriptor build = builder.build();
        /**
         * 预分region表: 对表的数据进行合理的规划 , 将数据存储不同的region中  避免插入热点
         * 参数一  表的描述器
         * 参数二  预分region的splitKey
         */
        byte[][] splits = new byte[][]{"g".getBytes(),"o".getBytes()};
        admin.createTable(build,splits);
        admin.close();
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值