HBase常用API总结
❤️ 使用的HBase版本为 1.31
1. pom.xml文件:
<dependencies>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-server</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.8.2</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.7.5</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.7.5</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.7.5</version>
</dependency>
</dependencies>
2.HBUtils
package com.wangt.hbase.utils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;
import java.io.IOException;
public class HBUtils {
private static Configuration conf = null;
private static Connection connection = null;
private static HBaseAdmin admin = null;
public static Configuration getHBaseConfiguration() {
conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", "222.22.91.81");
conf.set("hbase.zookeeper.property.clientPort", "2181");
return conf;
}
public static Connection getConnection() {
conf = getHBaseConfiguration();
try {
connection = ConnectionFactory.createConnection(conf);
} catch (IOException e) {
e.printStackTrace();
}
return connection;
}
public static void release(Connection connection, Admin admin) {
if (admin != null) {
try {
admin.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (connection != null) {
try {
connection.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static Put EncapsulationDataToPutObject(String rowKey, String cf, String cn, String value) {
Put put = new Put(Bytes.toBytes(rowKey));
put.addColumn(Bytes.toBytes(cf), Bytes.toBytes(cn), Bytes.toBytes(value));
return put;
}
}
1.查看表是否存在
package com.wangt.hbase.common;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
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 java.io.IOException;
public class TableExist {
private static Configuration conf = null;
static {
conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", "222.22.91.81");
conf.set("hbase.zookeeper.property.clientPort", "2181");
}
public static Configuration getHBaseConfiguration(){
return conf;
}
public static HBaseAdmin getHBaseAdmin() throws IOException {
Configuration conf = getHBaseConfiguration();
Connection connection = ConnectionFactory.createConnection(conf);
HBaseAdmin admin = (HBaseAdmin) connection.getAdmin();
return admin;
}
public static void main(String[] args) throws IOException {
String tableName = "dog";
HBaseAdmin admin = getHBaseAdmin();
TableName[] tableNames = admin.listTableNames();
for (TableName name : tableNames) {
System.out.println(name.getNameAsString());
}
System.out.println("dog 表是否存在 " + (admin.tableExists("dog") ? "存在" : "不存在"));
if(admin.tableExists("Person")){
System.out.println("Person 表存在");
}else{
System.out.println("Person 表不存在");
}
}
}
2.创建表
package com.wangt.hbase.common;
import com.wangt.hbase.utils.HBUtils;
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.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import java.io.IOException;
public class CreateTable {
public static void main(String[] args) throws IOException {
Connection connection = HBUtils.getConnection();
Admin admin = connection.getAdmin();
boolean isExist = admin.tableExists(TableName.valueOf("Person"));
if(!isExist){
HTableDescriptor descriptor = new HTableDescriptor(TableName.valueOf("Person"));
String[] columnFamily = new String[]{"info01" , "info02"};
for (String cf : columnFamily) {
HColumnDescriptor hColumnDescriptor = new HColumnDescriptor(cf);
descriptor.addFamily(hColumnDescriptor);
}
admin.createTable(descriptor);
System.out.println("表 Person 创建成功");
}
HBUtils.release(connection, admin);
}
}
3.删除表
package com.wangt.hbase.common;
import com.wangt.hbase.utils.HBUtils;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import java.io.IOException;
public class DeleteTable {
public static void main(String[] args) throws IOException {
Connection connection = HBUtils.getConnection();
Admin admin = connection.getAdmin();
TableName deleteTable = TableName.valueOf("person");
boolean isExist = admin.tableExists(deleteTable);
if (isExist){
admin.disableTable(deleteTable);
admin.deleteTable(deleteTable);
System.out.println("表已删除");
}else {
System.out.println("表不存在 , 无法删除");
}
}
}
4.添加数据
package com.wangt.hbase.common;
import com.wangt.hbase.utils.HBUtils;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;
import java.io.IOException;
public class PutTableData {
public static void main(String[] args) throws IOException {
Connection connection = HBUtils.getConnection();
Table personTable = connection.getTable(TableName.valueOf("Person"));
Put put = new Put(Bytes.toBytes("1001"));
put.addColumn(Bytes.toBytes("info01"), Bytes.toBytes("name"), Bytes.toBytes("李白"));
put.addColumn(Bytes.toBytes("info01"), Bytes.toBytes("age"), Bytes.toBytes("19"));
put.addColumn(Bytes.toBytes("info01"), Bytes.toBytes("sex"), Bytes.toBytes("男"));
personTable.put(put);
System.out.println("添加成功");
HBUtils.release(connection, null);
}
}
5.批量添加数据
package com.wangt.hbase.common;
import com.wangt.hbase.utils.HBUtils;
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 org.apache.hadoop.hbase.util.Bytes;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class PutMultipleTableData {
public static Put EncapsulationDataToPutObject(String rowKey, String cf, String cn, String value) {
Put put = new Put(Bytes.toBytes(rowKey));
put.addColumn(Bytes.toBytes(cf), Bytes.toBytes(cn), Bytes.toBytes(value));
return put;
}
public static void main(String[] args) throws IOException {
Connection connection = HBUtils.getConnection();
Table personTable = connection.getTable(TableName.valueOf("Person"));
List<Put> puts = new ArrayList<>();
for (int i = 1000 ; i <= 1040 ; i++){
if(puts.size() >= 10){
personTable.put(puts);
puts.clear();
}
Put put = EncapsulationDataToPutObject(i + "", "info01", "name", "maomao No." + i);
puts.add(put);
}
HBUtils.release(connection, null);
}
}
6.删除数据
package com.wangt.hbase.common;
import com.wangt.hbase.utils.HBUtils;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.util.Bytes;
import java.io.IOException;
public class DeleteTableData {
public static void main(String[] args) throws IOException {
Connection connection = HBUtils.getConnection();
Table personTable = connection.getTable(TableName.valueOf("Person"));
Delete delete = new Delete(Bytes.toBytes("1001"));
delete.addColumns(Bytes.toBytes("info01"), Bytes.toBytes("name"));
personTable.delete(delete);
System.out.println("删除成功....");
Delete delete01 = new Delete(Bytes.toBytes("1000"));
personTable.delete(delete01);
System.out.println("删除成功...");
HBUtils.release(connection, null);
}
}
⭐️特别注意 :
- addColumn : 使用addColumn添加信息删除数据的时候 只会删除最新版本的数据 ! 哪怕数据只有一个 版本 也会删除新的版本的数据 ,数据会退回到上一个版本的数据 一般使用 addColumns 可以把所有版本的数据全部删除 一般需要删除指定版本的时候 可以使用这个 , 一般删除都使用 addClumns
7.扫描全表数据
package com.wangt.hbase.common;
import com.wangt.hbase.utils.HBUtils;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;
import java.io.IOException;
public class ScanData {
public static void main(String[] args) throws IOException {
Connection connection = HBUtils.getConnection();
Table table = connection.getTable(TableName.valueOf("Person"));
Scan scan = new Scan();
ResultScanner results = table.getScanner(scan);
for (Result result : results) {
Cell[] cells = result.rawCells();
for (Cell cell : cells) {
String rowKey = Bytes.toString(CellUtil.cloneRow(cell));
String cf = Bytes.toString(CellUtil.cloneFamily(cell));
String cn = Bytes.toString(CellUtil.cloneQualifier(cell));
String value = Bytes.toString(CellUtil.cloneValue(cell));
System.out.println(
"[" + rowKey + "," + cf + "," + cn + "," + value + "]"
);
}
}
HBUtils.release( connection,null);
}
}
8.获取指定列数据
package com.wangt.hbase.common;
import com.wangt.hbase.utils.HBUtils;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.util.Bytes;
import java.io.IOException;
public class GetRowData {
public static void main(String[] args) throws IOException {
Connection connection = HBUtils.getConnection();
Table table = connection.getTable(TableName.valueOf("Person"));
Get get = new Get(Bytes.toBytes("1006"));
Result result = table.get(get);
Cell[] cells = result.rawCells();
for (Cell cell : cells) {
String rowKey = Bytes.toString(CellUtil.cloneRow(cell));
String cf = Bytes.toString(CellUtil.cloneFamily(cell));
String cn = Bytes.toString(CellUtil.cloneQualifier(cell));
String value = Bytes.toString(CellUtil.cloneValue(cell));
System.out.println(
"[" + rowKey + "," + cf + "," + cn + "," + value + "]"
);
}
table.close();
HBUtils.release( connection,null);
}
}
更新中… 😄
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)