亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

HBase基本API操作之CRUD-Util怎么用

發布時間:2021-12-08 15:06:12 來源:億速云 閱讀:127 作者:小新 欄目:云計算

這篇文章將為大家詳細講解有關HBase基本API操作之CRUD-Util怎么用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

一:創建HBaseUtil。

public class HBaseUtil {

	private static Configuration conf;
	private static Connection con;
	
	//初始化聯接
	static{
		//獲得配置文件對象:
		conf = HBaseConfiguration.create();
		conf.set("hbase.zookeeper.quorum", "192.168.226.129");
		try {
			//獲得連接對象:
			con = ConnectionFactory.createConnection(conf);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	//獲得連接:
	public static Connection getCon(){
		if( con == null || con.isClosed() ){
			try {
				con = ConnectionFactory.createConnection(conf);
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return con;
	}
	
	//關閉連接:
	public static void closeCon(){
		if( con != null ){
			try {
				con.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	
	
	//創建表:
	public static void createTable(String tableName,String...FamilyColumn ){
		TableName tn = TableName.valueOf(tableName);
		try {
			Admin admin = getCon().getAdmin();
			HTableDescriptor htd = new HTableDescriptor(tn);
			for(String fc : FamilyColumn){
				HColumnDescriptor hcd = new HColumnDescriptor(fc);
				htd.addFamily(hcd);
			}
			admin.createTable(htd);
			admin.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	//刪除表:
	public static void dropTable(String tableName){
		TableName tn = TableName.valueOf(tableName);
		try {
			Admin admin = con.getAdmin();
			admin.disableTable(tn);
			admin.deleteTable(tn);
			admin.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	//插入或更新數據
	public static boolean insert(String tableName,String rowKey,String family,String qualifier,String value){
		try {
			Table table = con.getTable(TableName.valueOf(tableName));
			Put put = new Put(Bytes.toBytes(rowKey));
			put.addColumn(Bytes.toBytes(family), Bytes.toBytes(qualifier), Bytes.toBytes(value));
			table.put(put);
			return true;
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
		//	HBaseUtil.closeCon();
		}
		return false;
	}

	//刪除數據記錄
	public static boolean delete(String tableName,String rowKey,String family,String qualifier){
		try {
			Table table = con.getTable(TableName.valueOf(tableName));
			Delete del = new Delete( Bytes.toBytes(rowKey));
			if( qualifier != null ){
				del.addColumn(Bytes.toBytes(family), Bytes.toBytes(qualifier));
			}else if( family != null ){
				del.addFamily( Bytes.toBytes(family) );
			}
			table.delete(del);
			return true;
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			//HBaseUtil.closeCon();
		}
		return false;
	}
	
	//刪除整行的數據記錄
	public static boolean delete(String tableName,String rowKey){
		return delete(tableName, rowKey, null, null);
	}
	
	//刪除某行某列的數據記錄
	public static boolean delete(String tableName, String rowKey, String family){
		return delete(tableName, rowKey, family, null);
	}
	
	//數據讀取
	//取到一個值
	public static String byGet(String tableName,String rowKey,String family,String qualifier){
		try {
			Table table = con.getTable(TableName.valueOf(tableName));
			Get get = new Get(Bytes.toBytes(rowKey));
			get.addColumn(Bytes.toBytes(family), Bytes.toBytes(qualifier));
			Result result = table.get(get);
			return Bytes.toString(CellUtil.cloneValue( result.listCells().get(0)));
		} catch (IOException e) {
			e.printStackTrace();
		}
		return null;
	}
	
	//取到一個族列的值
	public static Map<String,String> byGet(String tableName,String rowKey, String family ){
		Map<String,String> map = null;
		try {
			Table table = getCon().getTable( TableName.valueOf(tableName));
			Get get = new Get(Bytes.toBytes(rowKey));
			get.addFamily( Bytes.toBytes( family ));
			Result result = table.get(get);
			List<Cell> list = result.listCells();
			map =  (Map<String, String>) (list.size() > 0 ? new HashMap<String,String>() : result);
			for( Cell cell : list ){
				map.put(Bytes.toString(CellUtil.cloneQualifier(cell)), Bytes.toString(CellUtil.cloneValue(cell)));
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		return map;
	}
	
	//取到多個列族的值
	public static Map<String,Map<String,String>> byGet(String tableName,String rowKey){
		Map<String,Map<String,String>> maps = null;
		
		try {
			Table table = con.getTable(TableName.valueOf(tableName));
			Get get = new Get(Bytes.toBytes(rowKey));
			Result result = table.get(get);
			List<Cell> list = result.listCells();
			maps = (Map<String, Map<String, String>>) (list.size() >0 ? new HashMap<String,Map<String,String>>() : result);
			for( Cell cell : list){
				String familyName = Bytes.toString(CellUtil.cloneFamily(cell));
				if( maps.get(familyName) == null ){
					maps.put(familyName, new HashMap<String,String>() );
				}
				maps.get(familyName).put(Bytes.toString(CellUtil.cloneQualifier(cell)), Bytes.toString(CellUtil.cloneValue(cell)));
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		return maps;
	}
}

二:單元測試類 TestHBaseJUnit。

public class TestHBaseJUnit {

	//創建表并列出所有的表:
	@Test
	public void testCreateTable() throws IOException {
		//創建兩張表:  person 與 student 
		HBaseUtil.createTable("person", "famcolumn1","famcolumn2","famcolumn3");
		HBaseUtil.closeCon();
		HBaseUtil.createTable("student", "famcolumn1","famcolumn2","famcolumn3");
		HBaseUtil.closeCon();

		//列出所有表:
		Admin admin = HBaseUtil.getCon().getAdmin();
		TableName[] tables = admin.listTableNames();
		for (TableName tableName : tables) {
			System.out.println( "tableName: " + tableName );
		}
	}

	////判斷數據表是否存在。
	@Test
	public void testTableIsExists() throws IOException{
		TableName tn = TableName.valueOf("person"); //創建表名對象
		Admin admin = HBaseUtil.getCon().getAdmin();
		boolean isExists = admin.tableExists(tn);
		System.out.println( "person is Exists: "+ isExists  );
	}

	//刪除表
	@Test
	public void testDropTable() throws IOException{
		Admin admin = HBaseUtil.getCon().getAdmin();
		TableName tn = TableName.valueOf("student");
		System.out.println( admin.isTableDisabled(tn) );
		HBaseUtil.dropTable("student");
		admin = HBaseUtil.getCon().getAdmin();
		//判斷數據表是否還存在。
		boolean isExists = admin.tableExists(tn);
		System.out.println( "student is Exists: "+ isExists  );
	}

	//對表插入數據記錄
	@Test
	public void testInsert() throws TableNotFoundException, IOException{
		HBaseUtil.insert("person", "row1", "famcolumn1", "name", "Berg");
		HBaseUtil.insert("person", "row1", "famcolumn1", "age", "22");
		HBaseUtil.insert("person", "row1", "famcolumn1", "sex", "male");

		HBaseUtil.insert("person", "row1", "famcolumn2", "name", "BergBerg");
		HBaseUtil.insert("person", "row1", "famcolumn2", "age", "21");
		HBaseUtil.insert("person", "row1", "famcolumn2", "sex", "male");

		HBaseUtil.insert("person", "row1", "famcolumn3", "name", "BergBergBerg");
		HBaseUtil.insert("person", "row1", "famcolumn3", "age", "23");
		HBaseUtil.insert("person", "row1", "famcolumn3", "sex", "famale");


		Admin admin = HBaseUtil.getCon().getAdmin();
		TableName tn = TableName.valueOf("person");
		System.out.println( admin.getTableDescriptor(tn) );

	}

	//取到一個值
	@Test
	public void testByGet1(){
		String result = HBaseUtil.byGet("person", "row1", "famcolumn1", "name");
		System.out.println( " result:  " + result );
	}

	//取到一個族列的值
	@Test
	public void testByGet2(){
		Map<String, String> result = HBaseUtil.byGet("person", "row1", "famcolumn1");
		System.out.println( " result:  " + result );
	}

	//取到多個列族的值
	@Test
	public void testByGet3(){
		Map<String, Map<String, String>> result = HBaseUtil.byGet("person", "row1");
		System.out.println( " result:  " + result );
	}

	//刪除數據記錄
	@Test
	public void testDelete1(){
		HBaseUtil.delete("person", "row1", "famcolumn3", "age");

		//刪除數據后:
		Map<String, Map<String, String>> result = HBaseUtil.byGet("person", "row1");
		System.out.println( " result:  " + result );
	}

	//刪除某列數據
	@Test
	public void testTelete2(){
		HBaseUtil.delete("person", "row1", "famcolumn3");
		//刪除數據后:
		Map<String, Map<String, String>> result = HBaseUtil.byGet("person", "row1");
		System.out.println( " result:  " + result );

	}
	
	//刪除整行的數據
	@Test
	public void testTelete3(){
		HBaseUtil.delete("person", "row1");
		//刪除數據后:
		Map<String, Map<String, String>> result = HBaseUtil.byGet("person", "row1");
		System.out.println( " result:  " + result );

	}
}

關于“HBase基本API操作之CRUD-Util怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

且末县| 固始县| 凯里市| 晋江市| 兴仁县| 上林县| 同江市| 天柱县| 察雅县| 利辛县| 鄂尔多斯市| 泽州县| 兴宁市| 林口县| 曲水县| 武清区| 宜丰县| 凤冈县| 土默特左旗| 江安县| 区。| 琼中| 和政县| 紫云| 饶阳县| 涞源县| 英吉沙县| 静海县| 昂仁县| 永州市| 武城县| 福建省| 达日县| 当阳市| 松阳县| 岗巴县| 来安县| 贵港市| 崇信县| 华安县| 洛浦县|