HBase API 之 表操作

相关博客

第一步:创建Maven项目,导入依赖

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
</dependency>
<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-auth</artifactId>
    <version>3.1.2</version>
</dependency>

<dependency>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase-server</artifactId>
    <version>2.1.3</version>
    <!-- 去除版本不一致的传递依赖-->
    <exclusions>
        <exclusion>
            <groupId>org.apache.avro</groupId>
            <artifactId>avro</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<dependency>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase-client</artifactId>
    <version>2.1.3</version>
</dependency>

<dependency>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase-mapreduce</artifactId>
    <version>2.1.3</version>
</dependency>

<dependency>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase-common</artifactId>
    <version>2.1.3</version>
</dependency>

<dependency>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase-endpoint</artifactId>
    <version>2.1.3</version>
</dependency>
<dependency>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase-metrics-api</artifactId>
    <version>2.1.3</version>
</dependency>
<dependency>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase-thrift</artifactId>
    <version>2.1.3</version>
</dependency>
<dependency>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase-rest</artifactId>
    <version>2.1.3</version>
</dependency>
<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-client</artifactId>
    <version>3.1.2</version>
</dependency>
<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-common</artifactId>
    <version>3.1.2</version>
</dependency>
<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-hdfs</artifactId>
    <version>3.1.2</version>
</dependency>

第二步:加入log4j.properties

 ### 设置###
log4j.rootLogger = debug,stdout,D,E

### 输出信息到控制抬 ###

```java
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

### 输出DEBUG 级别以上的日志到=E://logs/error.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File =logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG 
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

### 输出ERROR 级别以上的日志到=E://logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =logs/error.log 
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR 
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

第三步:搭建代码框架

功能代码框架

public class HBaseUtil {
    private static Admin admin = null;
	private static Connection conn = null;
    static {
        //使用HBaseConfiguration的单例方法实例化
        Configuration conf = HBaseConfiguration.create();
        conf.set("hbase.zookeeper.quorum", "hcmaster:2181,hcslave1:2181,hcslave2:2181");
        conf.set("hbase.zookeeper.property.clientPort", "2181"); //此行为默认值,可以省略

        try {
            conn = ConnectionFactory.createConnection(conf);
            admin = conn.getAdmin();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

测试代码框架

public class HBaseUtilTest {
}

具体代码

判断表是否存在

  • 功能代码
public static boolean isTableExist(String tableName) throws Exception {
    boolean res = admin.tableExists(TableName.valueOf(tableName));
    admin.close();
    return res;
}
  • 测试代码
@Test
public void isTableExist() throws Exception {
    System.out.println(HBaseUtil.isTableExist("stu"));
    System.out.println(HBaseUtil.isTableExist("student"));
    System.out.println(HBaseUtil.isTableExist("hc:stu"));
}
  • 结果
    在这里插入图片描述

创建表

  • 功能代码
public static void createTable(String tableName, String... columnFamily) throws Exception {
    //判断表是否存在
    if (isTableExist(tableName)) {
        System.out.println("表" + tableName + "已存在");
        return;
    }
    //创建表描述器,表名需要转字节
    TableDescriptorBuilder builder = TableDescriptorBuilder.newBuilder(TableName.valueOf(tableName));
    //添加列族
    for (String cf : columnFamily) {
        ColumnFamilyDescriptor descriptor = ColumnFamilyDescriptorBuilder.of(cf);
        builder.setColumnFamily(descriptor);
    }
    //根据对表的配置,创建表
    admin.createTable(builder.build());
    admin.close();
    System.out.println("表" + tableName + "创建成功!");
}
  • 测试代码
@Test
public void createTable() throws Exception {
    HBaseUtil.createTable("stu2", "info1","info2");
}
  • 结果
    在这里插入图片描述

删除表

  • 功能代码
public static void dropTable(String tableName) throws Exception {
    if (isTableExist(tableName)) {
        admin.disableTable(TableName.valueOf(tableName));
        admin.deleteTable(TableName.valueOf(tableName));
        admin.close();
        System.out.println("表" + tableName + "删除成功!");
    } else {
        System.out.println("表" + tableName + "不存在!");
    }
}
  • 测试代码
@Test
public void dropTable() throws Exception {
    HBaseUtil.dropTable("stu2");
}
  • 结果
    在这里插入图片描述
发布了375 篇原创文章 · 获赞 777 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/lianghecai52171314/article/details/104780472