1 pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.demo</groupId>
<artifactId>hbasedemo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.7.3</version>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>1.2.6</version>
</dependency>
<dependency>
<groupId>jdk.tools</groupId>
<artifactId>jdk.tools</artifactId>
<version>1.8</version>
<scope>system</scope>
<systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>
</dependency>
<!--
如果是WEB项目,还需要在pom.xml中导入javaee-api.jar
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
</dependency>
-->
</dependencies>
</project>
2 测试代码
package demo;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.concurrent.ExecutorService;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.util.Bytes;
public class MTable {
Configuration conf=HBaseConfiguration.create();
HBaseAdmin admin;
public MTable() throws IOException {
conf.set("hbase.rootdir", "hdfs://master:9000/hbase");
conf.set("hbase.zookeeper.quorum", "master,slavea,slaveb");
Connection con = ConnectionFactory.createConnection(conf);
admin=(HBaseAdmin) con.getAdmin();
}
public void createtab(String tname,String fname) throws IOException {
boolean isTable = admin.tableExists(tname);
if(!isTable) {
TableName tabname=TableName.valueOf(tname);
HTableDescriptor tab=new HTableDescriptor(tabname);
tab.addFamily(new HColumnDescriptor(fname));
admin.createTable(tab);
}
}
public void addrow(String tname,String fname) throws IOException {
Connection con = ConnectionFactory.createConnection(conf);
Table table = con.getTable(TableName.valueOf(tname));
String rowid="1";
Put put=new Put(Bytes.toBytes(rowid));
String colname="xname";
put.addColumn(Bytes.toBytes(fname), Bytes.toBytes(colname), Bytes.toBytes("zhang"));
table.put(put);
con.close();
}
private void scantable(String tname) throws IOException {
Scan scan = new Scan();
scan.setStartRow(Bytes.toBytes("1"));
scan.setStopRow(Bytes.toBytes("8"));//实验发现范围取[1,6),左闭右开
ResultScanner rs = null;
Connection con = ConnectionFactory.createConnection(conf);
Table table = con.getTable(TableName.valueOf(tname));
rs = table.getScanner(scan);
for(Result r : rs){
for (KeyValue kv : r.list()){
System.out.println("row:" + Bytes.toString(kv.getRow()));
System.out.println("family:"+ Bytes.toString(kv.getFamily()));
System.out.println("qualifier:"+ Bytes.toString(kv.getQualifier()));
System.out.println("value:" + Bytes.toString(kv.getValue()));
System.out.println("timestamp:" + kv.getTimestamp());
System.out.println("-------------------------------------------");
}
}
}
@SuppressWarnings("deprecation")
private void readData(String tname, String fname) throws IOException {
Connection con = ConnectionFactory.createConnection(conf);
Table table = con.getTable(TableName.valueOf(tname));
Get row = new Get(Bytes.toBytes("1"));
Result res = table.get(row);
// List<KeyValue> list = res.list();
for (KeyValue kv : res.list()) {
byte[] family = kv.getFamily();
byte[] colname = kv.getQualifier();
byte[] value = kv.getValue();
long timestamp = kv.getTimestamp();
System.out.println("family:"+new String(family)+",column:"+new String(colname)+",value:"+new String(value));
}
}
MTable mt=new MTable();
String tname = "tabemp";
String fname = "fma";
mt.createtab(tname, fname);
mt.addrow(tname, fname);
}
}