文档首页/
MapReduce服务 MRS/
开发指南(普通版_3.x)/
HBase开发指南(普通模式)/
开发HBase应用/
HBase ThriftServer连接样例程序/
通过ThriftServer实例读HBase表数据
更新时间:2024-08-05 GMT+08:00
通过ThriftServer实例读HBase表数据
功能简介
传入ThriftServer实例所在host和提供服务的port,根据认证凭据及配置文件新建Thrift客户端,访问ThriftServer,分别使用get和scan进行读数据操作。
代码样例
- 方法调用
// Get data with single get. getData(client, TABLE_NAME); // Get data with getlist. getDataList(client, TABLE_NAME); // Scan data. scanData(client, TABLE_NAME);
- 使用get进行读数据
以下代码片段在“hbase-thrift-example\src\main\java\com\huawei\hadoop\hbase\examples”包的“ThriftSample”类的getData方法中。
private void getData(THBaseService.Iface client, String tableName) throws TException { LOGGER.info("Test getData."); TGet get = new TGet(); get.setRow("row1".getBytes()); ByteBuffer table = ByteBuffer.wrap(tableName.getBytes()); TResult result = client.get(table, get); printResult(result); LOGGER.info("Test getData done."); }
- 使用getlist进行读数据
以下代码片段在“hbase-thrift-example\src\main\java\com\huawei\hadoop\hbase\examples”包的“ThriftSample”类的getDataList方法中。
private void getDataList(THBaseService.Iface client, String tableName) throws TException { LOGGER.info("Test getDataList."); List<TGet> getList = new ArrayList<>(); TGet get1 = new TGet(); get1.setRow("row1".getBytes()); getList.add(get1); TGet get2 = new TGet(); get2.setRow("row2".getBytes()); getList.add(get2); ByteBuffer table = ByteBuffer.wrap(tableName.getBytes()); List<TResult> resultList = client.getMultiple(table, getList); for (TResult tResult : resultList) { printResult(tResult); } LOGGER.info("Test getDataList done."); }
- 使用scan进行读数据
以下代码片段在“hbase-thrift-example\src\main\java\com\huawei\hadoop\hbase\examples”包的“ThriftSample”类的scanData方法中。
private void scanData(THBaseService.Iface client, String tableName) throws TException { LOGGER.info("Test scanData."); int scannerId = -1; try { ByteBuffer table = ByteBuffer.wrap(tableName.getBytes()); TScan scan = new TScan(); scan.setLimit(500); scannerId = client.openScanner(table, scan); List<TResult> resultList = client.getScannerRows(scannerId, 100); while (resultList != null && !resultList.isEmpty()) { for (TResult tResult : resultList) { printResult(tResult); } resultList = client.getScannerRows(scannerId, 100); } } finally { if (scannerId != -1) { client.closeScanner(scannerId); LOGGER.info("Closed scanner {}.", scannerId); } } LOGGER.info("Test scanData done."); }