javaAPI操作Hbase


package chapter04;

import org.apache.commons.lang.StringUtils;
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.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;
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.Table;
import org.apache.hadoop.hbase.client.TableDescriptorBuilder;

public class ExampleForHbase {
	//配置類
	public static Configuration configuration ;
	// 連接類
	public static Connection connection ;
	// 管理類
	public static Admin admin;

	public static void main(String[] args) {
		init();
		//創建表
		//createTable("Score",new String[]{"sname","course"});
		// 刪除表
		//dropTable("Score");
		// 查詢所有的表
		//listTable();
		// 新增一條數據
		//insertRow("Score", "98001", "sname", "", "張三");
		// insertRow("Score","98001","course","math","80");
		// 查詢數據 
		getData("Score", "98001", "course", "math");
		// 刪除數據 
		deleteRow("Score", "98001", "sname", "");
		getData("Score", "98001", "sname","");
		close();
	}
	/**
	 * 初始化
	 */
	public static void init() {
		configuration = HBaseConfiguration.create();
		configuration.set("hbase.rootdir", "hdfs://localhost:9000/hbase");
		try {
			connection = ConnectionFactory.createConnection(configuration);
			admin = connection.getAdmin();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	/**
	 * 關閉
	 */
	public static void close() {
		try {
			if(admin!=null) {
				admin.close();
			}
			if(null != connection) {
				connection.close();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	/**
	 * 創建表
	 * @param tabName
	 * @param colFamily
	 */
	public static void createTable(String tabName,String[] colFamily) {
		try {
			TableName tableName = TableName.valueOf(tabName);
			if(admin.tableExists(tableName)) {
				System.out.println("Table is exist!");
			}else {
				TableDescriptorBuilder tableBuilder = TableDescriptorBuilder.newBuilder(tableName);
				for(String str:colFamily) {
					tableBuilder.setColumnFamily(ColumnFamilyDescriptorBuilder.of(str)) ;
				}
				admin.createTable(tableBuilder.build());
				System.out.println("Table create successful!");
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	/**
	 * 刪除表
	 * @param tabName
	 */
	public static void dropTable(String tabName) {
		try {
			TableName tableName = TableName.valueOf(tabName);
			admin.disableTable(tableName);
			admin.deleteTable(tableName);
			System.out.println("刪除成功"+tabName);
			close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	/**
	 * 查詢表列表
	 */
	public static void listTable() {
		try {
			TableName[] tbNames = admin.listTableNames();
			for (TableName tableName : tbNames) {
				System.out.println(tableName.getNameAsString());
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	/**
	 * 新增一條記錄
	 * @param tabName	表名
	 * @param rowKey	行鍵
	 * @param colFamily	列族
	 * @param column	列名
	 * @param value		單元值
	 */
	public static void insertRow(String tabName,String rowKey,String colFamily,String column,String value) {
		try {
			TableName tableName = TableName.valueOf(tabName);
			Table table = connection.getTable(tableName);
			Put put = new Put(rowKey.getBytes());
			put.addColumn(colFamily.getBytes(), column.getBytes(), value.getBytes());
			table.put(put);
			table.close();
			System.out.println("新增紀錄成功!");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	/**
	 * 刪除行數據
	 * @param tabName		表名
	 * @param rowKey		行鍵
	 * @param colFamily		列族
	 * @param qualifier		列修飾符
	 */
	public static void deleteRow(String tabName,String rowKey,String colFamily,String qualifier) {
		try {
			TableName tableName = TableName.valueOf(tabName);
			Table table = connection.getTable(tableName);
			Delete delete = new Delete(rowKey.getBytes());
			// 刪除指定列族的所有數據
			if(StringUtils.isNotEmpty(qualifier) && StringUtils.isNotEmpty(colFamily)) {
				delete.addColumn(colFamily.getBytes(),qualifier.getBytes());
			}else if(StringUtils.isNotEmpty(colFamily)) {
				delete.addFamily(colFamily.getBytes());
			}
			table.delete(delete);
			System.out.println("刪除數據成功");
			table.close();
		} catch (Exception e) {

		}
	}
	/**
	 * 查詢數據
	 * @param tabName
	 * @param rowKey
	 * @param colFamily
	 * @param qualifier
	 */
	public static void getData(String tabName,String rowKey,String colFamily,String qualifier) {
		try {
			TableName tableName = TableName.valueOf(tabName);
			Table table = connection.getTable(tableName);
			Get get = new Get(rowKey.getBytes());
			if(StringUtils.isNotEmpty(qualifier) && StringUtils.isNotEmpty(colFamily)) {
				get.addColumn(colFamily.getBytes(),qualifier.getBytes());
			}else if(StringUtils.isNotEmpty(colFamily)) {
				get.addFamily(colFamily.getBytes());
			}
			Result result = table.get(get);
			
			if(!result.isEmpty()) {
				showCell(result);
			}else {
				System.out.println("數據已經不存在");
			}
			table.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	/**
	 * 格式化輸出
	 * @param result
	 */
	private static void showCell(Result result){
		Cell[] cells = result.rawCells();
		for(Cell cell:cells){
			System.out.println("RowName:"+new String(CellUtil.cloneRow(cell))+" ");
			System.out.println("Timetamp:"+cell.getTimestamp()+" ");
			System.out.println("column Family:"+new String(CellUtil.cloneFamily(cell))+" ");
			System.out.println("row Name:"+new String(CellUtil.cloneQualifier(cell))+" ");
			System.out.println("value:"+new String(CellUtil.cloneValue(cell))+" ");
		}
	}
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM