大数据实战 Linux Ubuntu 20.04.1 HBase部署 数据操作程序

1 前提条件

1.1 HBase部署成功并打开进程

1.2在桌面化的Ubuntu系统打开eclipse

注:必须在angel用户下打开eclipse

2 正式工作

2.1 建立项目和类

执行菜单栏中的“File”-“New”-“Java Project”,创建HBaseDemo项目,再创建HBaseDemo类。

2.2 导入Hbase的jar包

2.2.1 进入设置环境变量

在这里插入图片描述

2.2.2 选择"Libraries",“add External JARs”。

在这里插入图片描述

2.2.3 选择jar包

/app/hbase-2.2.6/lib
在这里插入图片描述
这个路径下所有的jar包,点击右上角ok,即添加成功。

第一,zkcli文件下的jar包。
在这里插入图片描述
第二,shaded-clients文件下的jar包。
在这里插入图片描述
第三,ruby文件下的jar包。
在这里插入图片描述

第四,client-facing-thirdparty文件下的jar包。
在这里插入图片描述
最后,点击”apply“,导入成功。
在这里插入图片描述

2.3 新建HBaseDemo类

在HBaseDemo项目下的src目录,创建HBaseDemo类。

2.4 编写数据操作程序

代码如下:

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.ZooKeeperConnectionException;
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.Delete;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.util.Bytes;
public class HBaseDemo {
    
    
public static Configuration conf = new Configuration();
static {
    
    
conf = HBaseConfiguration.create();
conf.addResource("hbase-site.xml");
}
/**
* 创建表
*
* @param tablename 表名
* @param columnFamily 列族
* @throws MasterNotRunningException
* @throws ZooKeeperConnectionException
* @throws IOException
*/
public static void createTable(String tablename, String columnFamily)
throws MasterNotRunningException, IOException, ZooKeeperConnectionException {
    
    
Connection conn = ConnectionFactory.createConnection(conf);
Admin admin = conn.getAdmin();
try {
    
    
if (admin.tableExists(TableName.valueOf(tablename))) {
    
    
System.out.println(tablename + " already exists");
} else {
    
    
TableName tableName = TableName.valueOf(tablename);
HTableDescriptor tableDesc = new HTableDescriptor(tableName);
tableDesc.addFamily(new HColumnDescriptor(columnFamily));
admin.createTable(tableDesc);
System.out.println(tablename + " created succeed");
}
} finally {
    
    
admin.close();
conn.close();
}
}
/**
* 向表中插入一条新数据
*
* @param tableName 表名
* @param row 行键key
* @param columnFamily 列族
* @param column 列名
* @param data 要插入的数据
* @throws IOException
*/
public static void putData(String tableName, String row, String columnFamily, String column, String
data)
throws IOException {
    
    
Connection conn = ConnectionFactory.createConnection(conf);
Table table = conn.getTable(TableName.valueOf(tableName));
try {
    
    
Put put = new Put(Bytes.toBytes(row));
put.addColumn(Bytes.toBytes(columnFamily), Bytes.toBytes(column),
Bytes.toBytes(data));
table.put(put);
//  System.out.println("put '" + row + "','" + columnFamily + ":" + column + "','" + data + "'");
} finally {
    
    
table.close();
conn.close();
}
}
/**
* add a column family to an existing table
*
* @param tableName table name
* @param columnFamily column family
* @throws IOException
*/
public static void putFamily(String tableName, String columnFamily) throws IOException {
    
    
Connection conn = ConnectionFactory.createConnection(conf);
Admin admin = conn.getAdmin();
try {
    
    
if (!admin.tableExists(TableName.valueOf(tableName))) {
    
    
System.out.println(tableName + " not exists");
} else {
    
    
admin.disableTable(TableName.valueOf(tableName));
HColumnDescriptor cf1 = new HColumnDescriptor(columnFamily);
admin.addColumn(TableName.valueOf(tableName), cf1);
admin.enableTable(TableName.valueOf(tableName));
System.out.println(TableName.valueOf(tableName) + ", " + columnFamily + " put succeed");
}
} finally {
    
    
admin.close();
conn.close();
}
}
/**
* 根据key读取一条数据
*
* @param tableName 表名
* @param row 行键key
* @param columnFamily 列族
* @param column 列名
* @throws IOException
*/
public static void getData(String tableName, String row, String columnFamily, String column)
throws IOException{
    
    
Connection conn = ConnectionFactory.createConnection(conf);
Table table = conn.getTable(TableName.valueOf(tableName));
try{
    
    
Get get = new Get(Bytes.toBytes(row));
Result result = table.get(get);
byte[] rb = result.getValue(Bytes.toBytes(columnFamily), Bytes.toBytes(column));
String value = new String(rb, "UTF-8");
System.out.println(value);
} finally {
    
    
table.close();
conn.close();
}
}
/**
* get all data of a table
*
* @param tableName table name
* @throws IOException
*/
public static void scanAll(String tableName) throws IOException {
    
    
Connection conn = ConnectionFactory.createConnection(conf);
Table table = conn.getTable(TableName.valueOf(tableName));
try {
    
    
Scan scan = new Scan();
ResultScanner resultScanner = table.getScanner(scan);
for(Result result : resultScanner){
    
    
List<Cell> cells = result.listCells();
for(Cell cell : cells){
    
    
String row = new String(result.getRow(), "UTF-8");
String family = new String(CellUtil.cloneFamily(cell), "UTF-8");
String qualifier = new String(CellUtil.cloneQualifier(cell), "UTF-8");
String value = new String(CellUtil.cloneValue(cell), "UTF-8");
System.out.println("[row:"+row+"],[family:"+family+"],[qualifier:"+qualifier+"],[value:"+value+"]");
}
}
} finally {
    
    
table.close();
conn.close();
}
}
/**
* delete a data by row key
*
* @param tableName table name
* @param rowKey row key
* @throws IOException
*/
public static void delData(String tableName, String rowKey) throws IOException {
    
    
Connection conn = ConnectionFactory.createConnection(conf);
Table table = conn.getTable(TableName.valueOf(tableName));
try {
    
    
List<Delete> list = new ArrayList<Delete>();
Delete del = new Delete(rowKey.getBytes());
list.add(del);
table.delete(list);
System.out.println("delete record " + rowKey + " ok");
} finally {
    
    
table.close();
conn.close();
}
}
/**
* delete a column's value of a row
*
* @param tableName table name
* @param rowKey row key
* @param familyName family name
* @param columnName column name
* @throws IOException
*/
public static void deleteColumn(String tableName, String rowKey, String familyName, String
columnName) throws IOException {
    
    
Connection conn = ConnectionFactory.createConnection(conf);
Table table = conn.getTable(TableName.valueOf(tableName));
try{
    
    
Delete del = new Delete(Bytes.toBytes(rowKey));
del.addColumn(Bytes.toBytes(familyName), Bytes.toBytes(columnName));
List<Delete> list = new ArrayList<Delete>(1);
list.add(del);
table.delete(list);
System.out.println("[table:"+tableName+"],row:"+rowKey+"],[family:"+familyName+"],[qualifier:"+
columnName+"]");
} finally {
    
    
table.close();
conn.close();
}
}
/**
* delete a columnFamily's all columns value of a row
*
* @param tableName table name
* @param rowKey row key
* @param familyName family name
* @throws IOException
*/
public static void deleteFamily(String tableName, String rowKey, String familyName) throws
IOException {
    
    
Connection conn = ConnectionFactory.createConnection(conf);
Table table = conn.getTable(TableName.valueOf(tableName));
try{
    
    
Delete del = new Delete(Bytes.toBytes(rowKey));
del.addFamily(Bytes.toBytes(familyName));
List<Delete> list = new ArrayList<Delete>(1);
list.add(del);
table.delete(list);
System.out.println("[table:"+tableName+"],row:"+rowKey+"],[family:"+familyName+"]");
} finally {
    
    
table.close();
conn.close();
}
}
/**
* delete a table
*
* @param tableName table name
* @throws IOException
* @throws MasterNotRunningException
* @throws ZooKeeperConnectionException
*/
public static void deleteTable(String tableName) throws IOException, MasterNotRunningException,
ZooKeeperConnectionException {
    
    
Connection conn = ConnectionFactory.createConnection(conf);
Admin admin = conn.getAdmin();
try {
    
    
admin.disableTable(TableName.valueOf(tableName));
admin.deleteTable(TableName.valueOf(tableName));
System.out.println("delete table " + tableName + " ok");
} finally {
    
    
admin.close();
conn.close();
}
}
public static void main(String[] args) {
    
    
conf.set("hbase.zookeeper.quorum", "master,slave1,slave2");
System.err.println("start...");
//  String tableName = "student";
String tableName = "bus_load";
try{
    
    
//  createTable(tableName, "stu");
//  createTable(tableName + "2", "stu");
createTable(tableName, "load");
putData(tableName, "row_1", "load", "class", "183bigdata");
putData(tableName, "row_1", "load", "date", "2020-10-28");
putData(tableName, "row_1", "load", "name", "zhangsan");
putData(tableName, "row_1", "load", "telephone", "13888888888");
//  delData(tableName, "row_1");
//  delData(tableName, "row_2");
//	putFamily(tableName, "stu");
//  putData(tableName, "row_1", "stu", "stu_id", "001");
//  putData(tableName, "row_2", "stu", "stu_id", "002");
//  putData(tableName, "row_3", "stu", "stu_id", "003");
//  getData(tableName, "row_1", "stu", "stu_id");
//	delData(tableName, "row_3");
//  scanAll(tableName);
//  deleteTable(tableName + "2");
//  putFamily(tableName, "score");
// putData(tableName, "row_4", "score", "chinese", "90");
//  putData(tableName, "row_5", "score", "math", "91");
//  scanAll(tableName);
//  deleteColumn(tableName, "row_4", "score", "chinese");
//  deleteFamily(tableName, "row_5", "score");
scanAll(tableName);
} catch(Exception ex){
    
    
ex.printStackTrace();
}
System.err.println("end...");
}
}

保存,运行。
在这里插入图片描述

2.5 对数据表的基本操作

2.5.1 增加数据

行键为row_1,列族为load,列为class,值为183digdata。
行键为row_1,列族为load,列为data,值为2020-10-20。
行键为row_1,列族为load,列为telphone,值为138888888888。

2.5.2 查看表scan

在终端核对结果,
在这里插入图片描述

2.5.3 增加列族和行键

增加列族stu,
行键为row_1,列族stu,列为stu_id,值为001。
行键为row_2,列族stu,列为stu_id,值为002。
行键为row_3,列族stu,列为stu_id,值为003。
在这里插入图片描述
与终端核对结果。
在这里插入图片描述

2.5.4 删除行键

删除行键为row_3的数据。
在这里插入图片描述
在这里插入图片描述
删除行键为row_1的数据。
在这里插入图片描述

在这里插入图片描述
删除行键为row_2的数据。
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_45059457/article/details/109571010