HBASE是建立在Hadoop分布式系统基础之上的列模式数据库,Java连接HBASE需要如下几个jar包:hadoop-common、hadoop-mapreduce-client-core、hbase-common、hbase-client。这些jar包在maven仓库里都有,地址:https://mvnrepository.com/artifact/org.apache.hadoop,打开pom.xml文件拷贝如下代码进行自动导包(包版本自己选)
<!-- https://mvnrepository.com/artifact/org.apache.hadoop -->
<dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>2.7.7</version>
</dependency>
<dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-mapreduce-client-core</artifactId><version>2.7.7</version>
</dependency>
<dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-common</artifactId><version>2.0.5</version>
</dependency>
<dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-client</artifactId><version>2.0.5</version>
</dependency>
新建连接HBASE的类,这里需要指定HBASE所有DataNode节点(示例搭建hbase用了3个节点),代码如下:
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 HbaseUtil {public static Connection getConnect() throws IOException {Configuration configuration = new Configuration();configuration.set("hbase.zookeeper.quorum", "节点1,节点2,节点3");return ConnectionFactory.createConnection(configuration);}
}
调用并对hbase相关表进行操作
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Table;import java.io.IOException;
import java.util.ArrayList;
import java.util.List;public class TestHbase {private static final String TABLE_NAME = "wuxiaolong";private static final String FAMILY_NAME = "info";private static final String ROW_KEY = "Three";public static void main(String[] args) throws IOException {Connection conn = HbaseUtil.getConnect();Table table = conn.getTable(TableName.valueOf(TABLE_NAME));List<Put> puts = new ArrayList<Put>();Put put = new Put(ROW_KEY.getBytes());put.addColumn(FAMILY_NAME.getBytes(),"name".getBytes(),"wuxiaolong".getBytes());put.addColumn(FAMILY_NAME.getBytes(),"age".getBytes(),"30".getBytes());puts.add(put);table.put(puts);conn.close();}
}
在HBASE数据库查询操作结果