21xrx.com
2024-12-23 00:09:32 Monday
登录
文章检索 我的文章 写文章
Java与Hbase的完美结合:实现高效数据读写
2023-06-15 15:55:31 深夜i     --     --
Java HBase 数据读写

Hbase是一种NoSQL数据库,被广泛应用于大数据场景。Java作为开发者最熟悉的编程语言之一,与Hbase的结合非常紧密。本文将介绍如何利用Java访问Hbase数据库,实现高效数据读写的功能。

前置条件

在使用Java访问Hbase之前,需要先按照以下步骤进行安装和配置:

1. 下载Hbase,并解压到本地目录

2. 启动Hbase服务:进入Hbase安装目录下的bin目录,执行命令./start-hbase.sh

3. 进入Hbase shell:执行命令./hbase shell

4. 创建表:创建一个名为testTable的表

  create 'testTable', 'cf'

Java访问Hbase

在Java中访问Hbase,首先需要引入Hbase相关的jar包,例如:

hbase-client-1.2.0-cdh5.14.2.jar

hbase-common-1.2.0-cdh5.14.2.jar

hbase-protocol-1.2.0-cdh5.14.2.jar

hbase-server-1.2.0-cdh5.14.2.jar

接着,我们就可以在Java中连接Hbase数据库,并进行数据读写操作了。下面是一个示例代码:

@Configuration

public class HBaseConnectionConfig {

  @Value("${hbase.zookeeper.quorum}")

  private String zkQuorum;

  @Value("${hbase.zookeeper.property.clientPort}")

  private String zkClientPort;

  private Configuration config() {

    Configuration config = HBaseConfiguration.create();

    config.set("hbase.zookeeper.quorum", zkQuorum);

    config.set("hbase.zookeeper.property.clientPort", zkClientPort);

    return config;

  }

  @Bean

  public Connection hbaseConnection() {

    Connection connection = null;

    try {

      connection = ConnectionFactory.createConnection(config());

    } catch (IOException e) {

      e.printStackTrace();

    }

    return connection;

  }

}

public class HBaseUtil {

  private static Configuration configuration = null;

  private static Connection connection = null;

  static {

    try {

      configuration = HBaseConfiguration.create();

      Resource resource = new ClassPathResource("application.properties");

      Properties properties = PropertiesLoaderUtils.loadProperties(resource);

      configuration.set("hbase.zookeeper.quorum", properties.getProperty("hbase.zookeeper.quorum"));

      configuration.set("hbase.zookeeper.property.clientPort", properties.getProperty("hbase.zookeeper.property.clientPort"));

      connection = ConnectionFactory.createConnection(configuration);

    } catch (IOException e) {

      e.printStackTrace();

    }

  }

  public static Connection getConnection()

    return connection;

  public static Table getTable(String tableName) throws IOException {

    if (tableName != null && tableName.length() > 0) {

      return getConnection().getTable(TableName.valueOf(tableName));

    }

    return null;

  }

  public static void close(Table table, Admin admin, Connection conn) {

    if (table != null) {

      try {

        table.close();

      } catch (IOException e) {

        e.printStackTrace();

      }

    }

    if (admin != null) {

      try {

        admin.close();

      } catch (IOException e) {

        e.printStackTrace();

      }

    }

    if (conn != null) {

      try {

        conn.close();

      } catch (IOException e) {

        e.printStackTrace();

      }

    }

  }

}

public class HBaseTest {

  public static void main(String[] args) throws IOException {

    Table table = HBaseUtil.getTable("testTable");

    Put put = new Put(Bytes.toBytes("row1"));

    put.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("col"), Bytes.toBytes("value"));

    table.put(put);

    Get get = new Get(Bytes.toBytes("row1"));

    Result result = table.get(get);

    byte[] value = result.getValue(Bytes.toBytes("cf"), Bytes.toBytes("col"));

    System.out.println(Bytes.toString(value));

    HBaseUtil.close(table, null, null);

  }

}

在这段代码中,我们首先会通过HBaseUtil类连接Hbase数据库,执行操作之后再关闭连接。在HBaseUtil类中,我们可以看到getTable、close等方法,这些方法会在我们需要访问Hbase时被调用,实现对Hbase数据库的访问。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复