打开右侧代码文件窗口,在 Begin 至 End 区域补充代码,完成任务。 启动 Hadoop 、Zookeeper、HBase 服务,完善代码,列出 HBase 中默认库中所有表的名称。 Zookeeper 通信地址:localhost:2181
时间: 2024-12-23 11:18:13 浏览: 11
首先,我们需要创建一个`HBase`的`Configuration`对象并设置Zookeeper地址。然后,利用`ZooKeeper`连接获取`HBase`的连接。接着,我们可以使用`Admin`接口列出默认库(通常是`root`)中的所有表。下面是完整代码:
```java
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.TableDescriptor;
import java.io.IOException;
import java.util.List;
public class HBaseUtils {
public static void main(String[] args) {
// 设置HBase配置
Configuration config = HBaseConfiguration.create();
config.set("hbase.zookeeper.quorum", "localhost");
config.set("hbase.zookeeper.property.clientPort", "2181");
// 创建HBase连接
try (Connection connection = ConnectionFactory.createConnection(config)) {
Admin admin = connection.getAdmin();
// 列出默认库(通常为"root")中的所有表
String defaultNamespace = "root";
TableName tableName = TableName.valueOf(defaultNamespace);
List<TableName> tables = admin.listTableNamesByNamespace(tableName);
if (!tables.isEmpty()) {
System.out.println("Tables in the default namespace (" + defaultNamespace + "):");
for (TableName table : tables) {
System.out.println(table.getNameAsString());
}
} else {
System.out.println("No tables found in the default namespace.");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
在这个代码中,我们使用了try-with-resources语句自动关闭`Connection`和`Admin`,以释放资源。
阅读全文