目录
引入的依赖
<dependencies> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</artifactId> <version>2.4.11</version> <exclusions> <exclusion> <artifactId>javax.el</artifactId> <groupId>org.glassfish</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.glassfish</groupId> <artifactId>javax.el</artifactId> <version>3.0.1-b06</version> </dependency> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-common</artifactId> <version>2.4.11</version> </dependency> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-common</artifactId> <version>2.4.11</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-common --> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>2.10.0</version> </dependency> </dependencies>
创建连接
单线程使用连接
conf.set的配置信息具体跟本地hosts文件中的配置有关
public class HBaseConnection { public static void main(String[] args) throws IOException { //1.创建连接配置对象 Configuration conf = new Configuration(); //2.添加配置参数 zookeeper地址 conf.set("hbase.zookeeper.quorum","node1,node2,node3"); //3.创建连接,默认使用同步连接 Connection connection = ConnectionFactory.createConnection(conf); //也可以使用异步连接 //CompletableFuture<AsyncConnection> asyncConnection = ConnectionFactory.createAsyncConnection(); //4.使用连接 System.out.println(connection); //5.关闭连接 connection.close(); } }
在创建连接时,由于该连接是重量级的,创建时最好创建一个,所以当多个线程使用连接时,需要只创建一个连接,采用单例的模式
多线程使用连接
public class HBaseConnection2 { public static Connection connection = null; static { //1.创建连接配置对象 Configuration conf = new Configuration(); //2.添加配置参数 zookeeper地址 conf.set("hbase.zookeeper.quorum","node1,node2,node3"); //3.创建连接,默认使用同步连接 try { connection = ConnectionFactory.createConnection(conf); } catch (IOException e) { e.printStackTrace(); } } public static void closeConnection(){ if(connection != null) { try { connection.close(); } catch (IOException e) { e.printStackTrace(); } } } public static void main(String[] args) { //4.使用连接 System.out.println(HBaseConnection2.connection); HBaseConnection2.closeConnection(); } }