package hbase;
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 java.io.IOException;
import java.util.Iterator;
public class App {
static Connection connection;
static Configuration configuration;
static Admin admin;
public static void main(String[] args) throws IOException {
init();
//createTable("stu",new String[]{"info","sub"});
//addData("stu","001","info","name","zhu");
//addData("stu","001","info","gender","male");
//addData("stu","001","info","addr","beijing");
//addData("stu","001","sub","Math","20");
//addData("stu","001","sub","Chinese","30");
//addData("stu","001","sub","English","50");
//selectData("stu");
//serchData("stu","001");
//deleteData("stu","001");
//droptable("stu");
closeAll();
}
//1.创建Hbase连接的函数 初始化
public static void init() throws IOException {
configuration= HBaseConfiguration.create();//配置对象
connection= ConnectionFactory.createConnection(configuration);
System.out.println(connection);
admin=connection.getAdmin();
}
//2.释放资源
public static void closeAll() throws IOException {
admin.close();
connection.close();
}
//3.创建数据表
public static void createTable(String name,String columnFamliy[]) throws IOException {
//1.判断表名是否存在
TableName tableName=TableName.valueOf(name);
if (admin.tableExists(tableName)){
System.out.println("表已经存在!");
}else {
//创建表的描述对象
HTableDescriptor descriptor=new HTableDescriptor(tableName);
for (String column:columnFamliy) {
//创建列族的描述对象
HColumnDescriptor columnDescriptor=new HColumnDescriptor(column);
//绑定
descriptor.addFamily(columnDescriptor);
}
admin.createTable(descriptor);
System.out.println(name+"表创建成功!");
}
}
//4.新增数据
public static void addData(String tableName,String rowKey,String columanFamliyName,String columanName,String values) throws IOException {
Table table=connection.getTable(TableName.valueOf(tableName));
Put put=new Put(rowKey.getBytes());
put.addColumn(columanFamliyName.getBytes(),columanName.getBytes(),values.getBytes());
table.put(put);//添加数据
}
//5.查询表中所有数据
public static void selectData(String tableName) throws IOException {
Table table=connection.getTable(TableName.valueOf(tableName));//获取表对象
ResultScanner scanner=table.getScanner(new Scan());
Iterator<Result> iterator = scanner.iterator();
while (iterator.hasNext()){
Result next = iterator.next();
for (Cell cell:next.rawCells()) {
System.out.print("row key:"+ Bytes.toString(next.getRow()));
System.out.print(",Column Famliy:"+Bytes.toString(CellUtil.cloneFamily(cell)));
System.out.print(",Column:"+Bytes.toString(CellUtil.cloneQualifier(cell)));
System.out.print(",values:"+Bytes.toString(CellUtil.cloneValue(cell)));
System.out.println();
}
}
}
//6.检索数据
public static void serchData(String tableName,String rowKey) throws IOException {
Table table=connection.getTable(TableName.valueOf(tableName));
Get get=new Get(rowKey.getBytes());
Result result=table.get(get);
for (Cell cell:result.rawCells()) {
System.out.print("row key:"+ rowKey);
System.out.print(",Column Famliy:"+Bytes.toString(CellUtil.cloneFamily(cell)));
System.out.print(",Column:"+Bytes.toString(CellUtil.cloneQualifier(cell)));
System.out.print(",values:"+Bytes.toString(CellUtil.cloneValue(cell)));
System.out.println();
}
}
//7.删除数据
public static void deleteData(String tableName,String rowKey) throws IOException {
Table table=connection.getTable(TableName.valueOf(tableName));
Delete delete=new Delete(rowKey.getBytes());
table.delete(delete);
}
//8.删除表,删除之前需要禁用,enable可用disable禁用
public static void droptable(String tableName) throws IOException {
if (admin.tableExists(TableName.valueOf(tableName))){
//证明表存在
admin.disableTable(TableName.valueOf(tableName));
admin.deleteTable(TableName.valueOf(tableName));
}
}
}
JDBC:Java操作Hbase的代码!
最新推荐文章于 2021-04-04 15:15:53 发布