1.项目场景 (idea连接hbase)

先检查hadoop,zookeeper,hbase启动没有

 idea连接hbase,创建命名空间,idea一直卡住在日志,没有输出

package com.wf.hbase;

import org.apache.hadoop.hbase.NamespaceDescriptor;

import org.apache.hadoop.hbase.client.Admin;

import org.apache.hadoop.hbase.client.Connection;

import java.io.IOException;

public class HbaseDDL {

//连接

// public static Connection connection=HbaseConnectUtil.connection;

// 添加静态属性 connection 指向单例连接

public static Connection connection = ConnectUtil.getConnection();

// 1. 获取 admin

public static void createNamespace(String namespace) throws

IOException {

Admin admin = connection.getAdmin();

NamespaceDescriptor.Builder builder =

NamespaceDescriptor.create(namespace);

// 2.2 给命令空间添加需求

builder.addConfiguration("user", "atguigu");

// 2.3 使用 builder 构造出对应的添加完参数的对象 完成创建

// 创建命名空间出现的问题 都属于本方法自身的问题 不应该抛出

try {

admin.createNamespace(builder.build());

} catch (IOException e) {

System.out.println("命令空间已经存在");

e.printStackTrace();

}

// 3. 关闭 admin

admin.close();

}

public static void main(String[] args) throws IOException {

//DDL需要Admin示例来操作

createNamespace("nazhan");

//其他代码

System.out.println("其他代码");

//关闭connection,重量级的

ConnectUtil.close();

}

}

2.解决办法

不要使用resources下面的配置文件hbase-site.xml,虽然源码是读取这个,但是十分的慢

改成手动配置

package com.wf.hbase;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.client.Connection;

import org.apache.hadoop.hbase.client.ConnectionFactory;

import java.io.IOException;

public class ConnectUtil {

private static Connection connection=null;

public static Connection getConnection() {

Configuration conf = new Configuration();

//2.添加配置参数

conf.set("hbase.zookeeper.quorum","hadoop102,hadoop103,hadoop104");

//3.创建hbase的连接

//默认使用同步连接

try {

connection = ConnectionFactory.createConnection();

} catch (IOException e) {

e.printStackTrace();

}

return connection;

}

public static void close() throws IOException {

if(connection!=null){

connection.close();

}

}

}

参考阅读

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。