添加依赖
<!-- 添加hadoop依赖 -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>${hadoop.version}</version>
</dependency>
<!-- 添加hbase依赖 -->
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-server</artifactId>
<version>${hbase.version}</version>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>${hbase.version}</version>
</dependency>
<!-- 添加zookeeper依赖 -->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>${zookeeper.version}</version>
</dependency>
判断表是否存在
旧API
public boolean existOld(String tableName) throws IOException {
// 设置zookeeper参数
Configuration conf = new HBaseConfiguration();
conf.set(HConstants.ZOOKEEPER_QUORUM, "host000");
// 创建HBaseAdmin
HBaseAdmin admin = new HBaseAdmin(conf);
// 执行
boolean tableExists = admin.tableExists(tableName);
// 关闭资源
admin.close();
return tableExists;
}
新API
Connection conn = null;
Admin admin = null;
@Before
public void setUp() throws IOException {
// 设置zookeeper参数,这些参数要写在createConnection之前
Configuration conf = HBaseConfiguration.create();
conf.set(HConstants.ZOOKEEPER_QUORUM, "host000");
// 创建HBaseAdmin
conn = ConnectionFactory.createConnection(conf);
admin = conn.getAdmin();
}
// 判断是否存在
@Test
public void exists() throws IOException {
boolean tableExist = admin.tableExists(TableName.valueOf("student"));
System.out.println(tableExist);
}
@After
public void close() throws IOException {
// 关闭资源
admin.close();
conn.close();
}
创建表
Connection conn = null;
Admin admin = null;
@Before
public void setUp() throws IOException {
// 设置zookeeper参数,这些参数要写在createConnection之前
Configuration conf = HBaseConfiguration.create();
conf.set(HConstants.ZOOKEEPER_QUORUM, "host000");
// 创建HBaseAdmin
conn = ConnectionFactory.createConnection(conf);
admin = conn.getAdmin();
}
// 创建表: 最好判断如果不存在创建
@Test
public void createTable() throws IOException {
createTable("student", "info");
}
private void createTable(String tableName, String... cfs) throws IOException {
// 表描述器
HTableDescriptor tableDesc = new HTableDescriptor(TableName.valueOf(tableName));
// 添加列族
for (String cf : cfs) {
// 列描述器
HColumnDescriptor columnDesc = new HColumnDescriptor(cf);
columnDesc.setMaxVersions(3); // 设置版本
tableDesc.addFamily(columnDesc);
}
// 创建表
admin.createTable(tableDesc);
}
@After
public void close() throws IOException {
// 关闭资源
admin.close();
conn.close();
}
删除表
Connection conn = null;
Admin admin = null;
@Before
public void setUp() throws IOException {
// 设置zookeeper参数,这些参数要写在createConnection之前
Configuration conf = HBaseConfiguration.create();
conf.set(HConstants.ZOOKEEPER_QUORUM, "host000");
// 创建HBaseAdmin
conn = ConnectionFactory.createConnection(conf);
admin = conn.getAdmin();
}
// 删除表: 最好判断如果存在才删除
@Test
public void deleteTable() throws IOException {
// 下线
admin.disableTable(TableName.valueOf("student"));
// 删除
admin.deleteTable(TableName.valueOf("student"));
}
@After
public void close() throws IOException {
// 关闭资源
admin.close();
conn.close();
}
新增和修改
Connection conn = null;
Admin admin = null;
Configuration conf = null;
@Before
public void setUp() throws IOException {
// 设置zookeeper参数,这些参数要写在createConnection之前
conf = HBaseConfiguration.create();
conf.set(HConstants.ZOOKEEPER_QUORUM, "host000");
// 创建HBaseAdmin
conn = ConnectionFactory.createConnection(conf);
admin = conn.getAdmin();
}
// 增/改
// -------------------------------------------------------------------
@Test
public void putData() throws IOException {
putData("student","1001","info","name","baozi");
}
private void putData(String tableName, String rowKey, String cf, String cn, String value) throws IOException {
Table table = conn.getTable(TableName.valueOf(tableName));
// 准备PUT对象
Put put = new Put(Bytes.toBytes(rowKey));
put.addColumn(Bytes.toBytes(cf), Bytes.toBytes(cn), Bytes.toBytes(value));
// 添加
table.put(put);
}
@After
public void close() throws IOException {
// 关闭资源
admin.close();
conn.close();
}
查询数据
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.util.Arrays;
public class HBaseTest2 {
Connection conn = null;
Admin admin = null;
Configuration conf = null;
@Before
public void setUp() throws IOException {
// 设置zookeeper参数,这些参数要写在createConnection之前
conf = HBaseConfiguration.create();
conf.set(HConstants.ZOOKEEPER_QUORUM, "host000");
// 创建HBaseAdmin
conn = ConnectionFactory.createConnection(conf);
admin = conn.getAdmin();
}
// 查
// -------------------------------------------------------------------
@Test
public void scanTable() throws IOException {
scanTable("student");
}
private void scanTable(String tableName) throws IOException {
Table table = conn.getTable(TableName.valueOf(tableName));
Scan scan = new Scan();
// scan.setStartRow(Bytes.toBytes("1001"));
ResultScanner rows = table.getScanner(scan);
// 遍历结果: row -> cells
rows.forEach(row -> {
Arrays.stream(row.rawCells()).forEach(cell -> {
String res = String.format("RK:%s, CF:%s, CN:%s, VALUE:%s",
Bytes.toString(CellUtil.cloneRow(cell)),
Bytes.toString(CellUtil.cloneFamily(cell)),
Bytes.toString(CellUtil.cloneQualifier(cell)),
Bytes.toString(CellUtil.cloneValue(cell))
);
System.out.println(res);
});
});
}
@Test
public void get() throws IOException {
get("student","1002");
get("student","1002", "info", "name");
}
// get 'student','1002'
private void get(String tableName, String rowKey) throws IOException {
Table table = conn.getTable(TableName.valueOf(tableName));
// 准备Get对象
Get get = new Get(Bytes.toBytes(rowKey));
Result row = table.get(get);
// 遍历cell
Arrays.stream(row.rawCells()).forEach(cell -> {
String res = String.format("RK:%s, CF:%s, CN:%s, VALUE:%s",
Bytes.toString(CellUtil.cloneRow(cell)),
Bytes.toString(CellUtil.cloneFamily(cell)),
Bytes.toString(CellUtil.cloneQualifier(cell)),
Bytes.toString(CellUtil.cloneValue(cell))
);
System.out.println(res);
});
table.close();
}
// get 'student','1002','info:name'
private void get(String tableName, String rowKey, String cf, String cn) throws IOException {
Table table = conn.getTable(TableName.valueOf(tableName));
// 准备Get对象
Get get = new Get(Bytes.toBytes(rowKey));
get.addColumn(Bytes.toBytes(cf), Bytes.toBytes(cn));
Result row = table.get(get);
// 遍历cell
Arrays.stream(row.rawCells()).forEach(cell -> {
String res = String.format("RK:%s, CF:%s, CN:%s, VALUE:%s",
Bytes.toString(CellUtil.cloneRow(cell)),
Bytes.toString(CellUtil.cloneFamily(cell)),
Bytes.toString(CellUtil.cloneQualifier(cell)),
Bytes.toString(CellUtil.cloneValue(cell))
);
System.out.println(res);
});
table.close();
}
@After
public void close() throws IOException {
// 关闭资源
admin.close();
conn.close();
}
}
删除数据
Connection conn = null;
Admin admin = null;
Configuration conf = null;
@Before
public void setUp() throws IOException {
// 设置zookeeper参数,这些参数要写在createConnection之前
conf = HBaseConfiguration.create();
conf.set(HConstants.ZOOKEEPER_QUORUM, "host000");
// 创建HBaseAdmin
conn = ConnectionFactory.createConnection(conf);
admin = conn.getAdmin();
}
// 删
// -------------------------------------------------------------------
@Test
public void delete() throws IOException {
delete("student","1001");
delete("student","1002","info","name");
}
private void delete(String tableName, String rowKey) throws IOException {
Table table = conn.getTable(TableName.valueOf(tableName));
// deleteall,删除主键下所有
Delete delete = new Delete(Bytes.toBytes(rowKey));
table.delete(delete);
table.close();
}
private void delete(String tableName, String rowKey, String cf, String cn) throws IOException {
Table table = conn.getTable(TableName.valueOf(tableName));
// delete, 删除指定列
Delete delete = new Delete(Bytes.toBytes(rowKey));
// 删除指定列所有版本
delete.addColumns(Bytes.toBytes(cf), Bytes.toBytes(cn));
// 删除指定版本,默认删除最新版本
// delete.addColumn(Bytes.toBytes(cf), Bytes.toBytes(cn));
table.delete(delete);
table.close();
}
@After
public void close() throws IOException {
// 关闭资源
admin.close();
conn.close();
}
网友评论