Java代码结合HBase查询数据库代码示例
时间: 2023-07-03 20:26:28 浏览: 152
HBase Java API操作数据库示例代码-HBaseDemo.rar
以下是一个Java代码结合HBase查询数据库的示例:
```java
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
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.Scan;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.filter.CompareFilter;
import org.apache.hadoop.hbase.filter.Filter;
import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;
import org.apache.hadoop.hbase.util.Bytes;
public class HBaseQueryExample {
public static void main(String[] args) throws IOException {
Configuration conf = HBaseConfiguration.create();
Connection connection = ConnectionFactory.createConnection(conf);
// 获取表
Table table = connection.getTable(TableName.valueOf("my_table"));
// 构造查询条件
byte[] family = Bytes.toBytes("cf1");
byte[] qualifier = Bytes.toBytes("qualifier1");
byte[] value = Bytes.toBytes("value1");
Filter filter = new SingleColumnValueFilter(family, qualifier, CompareFilter.CompareOp.EQUAL, value);
// 构造扫描器
Scan scan = new Scan();
scan.setFilter(filter);
// 执行查询
List<String> results = new ArrayList<>();
ResultScanner scanner = table.getScanner(scan);
for (Result result : scanner) {
for (Cell cell : result.listCells()) {
String row = Bytes.toString(CellUtil.cloneRow(cell));
String column = Bytes.toString(CellUtil.cloneQualifier(cell));
String val = Bytes.toString(CellUtil.cloneValue(cell));
String res = row + " " + column + " " + val;
results.add(res);
}
}
// 关闭资源
scanner.close();
table.close();
connection.close();
// 输出结果
for (String res : results) {
System.out.println(res);
}
}
}
```
上述代码中,我们首先创建了一个`Configuration`对象,并通过`ConnectionFactory`获取了`Connection`对象。然后,我们使用`getTable`方法获取了指定表的`Table`对象。
接着,我们构造了一个查询条件,这里使用了`SingleColumnValueFilter`过滤器,表示查询`cf1:qualifier1`列的值等于`value1`的行。
然后,我们构造了一个`Scan`对象,并设置了上述查询条件。接着,我们调用`table.getScanner(scan)`方法获取到了一个`ResultScanner`对象,通过遍历`ResultScanner`对象中的`Result`对象,我们可以获取到查询结果。
最后,我们关闭了相关的资源,输出了查询结果。
阅读全文