📅  最后修改于: 2023-12-03 14:41:42.219000             🧑  作者: Mango
在 HBase 中,读取数据有两种方式:使用 HBase shell 或者使用 Java 代码。
使用 HBase shell 读取数据可以通过以下命令实现:
get '<table-name>', '<row-key>', {COLUMN => '<column-family>:<column-name>'}
其中:
<table-name>
:HBase 表的名称。<row-key>
:表中某一行的唯一标识符。<column-family>
:列簇的名称。<column-name>
:列的名称。例如,想要获取表 student
中 row1
行 info
列簇下的 name
列的值,可以输入以下命令:
get 'student', 'row1', {COLUMN => 'info:name'}
使用 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 读取数据的开发者有所帮助。