📜  HBase-读取数据(1)

📅  最后修改于: 2023-12-03 14:41:42.219000             🧑  作者: Mango

HBase 读取数据

在 HBase 中,读取数据有两种方式:使用 HBase shell 或者使用 Java 代码。

在 HBase shell 中读取数据

使用 HBase shell 读取数据可以通过以下命令实现:

get '<table-name>', '<row-key>', {COLUMN => '<column-family>:<column-name>'}

其中:

  • <table-name>:HBase 表的名称。
  • <row-key>:表中某一行的唯一标识符。
  • <column-family>:列簇的名称。
  • <column-name>:列的名称。

例如,想要获取表 studentrow1info 列簇下的 name 列的值,可以输入以下命令:

get 'student', 'row1', {COLUMN => 'info:name'}
在 Java 代码中读取数据

使用 Java 代码读取 HBase 中的数据需要使用 HBase 提供的 Java API。以下是读取 HBase 数据的示例代码:

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.util.Bytes;

public class HBaseReadDataExample {
    public static void main(String[] args) throws Exception {
        Configuration conf = HBaseConfiguration.create();
        Connection connection = ConnectionFactory.createConnection(conf);
        Table table = connection.getTable(TableName.valueOf("student"));

        Get get = new Get(Bytes.toBytes("row1"));
        get.addColumn(Bytes.toBytes("info"), Bytes.toBytes("name"));

        Result result = table.get(get);
        Cell cell = result.getColumnLatestCell(Bytes.toBytes("info"), Bytes.toBytes("name"));
        byte[] valueBytes = cell.getValueArray();
        String value = new String(valueBytes, cell.getValueOffset(), cell.getValueLength());

        System.out.println(value);

        table.close();
        connection.close();
    }
}

以上代码中,首先创建一个 HBase 的配置对象,然后通过 ConnectionFactory 创建一个连接,再通过连接获取到需要操作的表对象。接着创建一个 Get 对象,指定需要获取的行和列,通过 table.get() 方法获取到需要的结果,最后从结果中提取出需要的值即可。在获取结果中,我们可以通过 Result 对象的 getColumnLatestCell() 方法获取到某个列的最新版本的数据,并将其转化成字符串类型。

以上是关于 HBase 读取数据的简要介绍,希望对使用 HBase 读取数据的开发者有所帮助。