HBaseの一般的なオペレーティングJAVAのAPI

将来の閲覧を容易にするために、我々は一般的に使用される操作のHBaseのJavaコードの一部を要約します:

パッケージcom.mcq。

静的org.hamcrest.CoreMatchers.describedAsをインポートします。
輸入静的org.hamcrest.CoreMatchers.nullValue。

インポートにjava.io.IOException; 
輸入java.io.PushbackInputStream。

輸入org.apache.hadoop.conf.Configuration。
輸入org.apache.hadoop.hbase.Cell; 
輸入org.apache.hadoop.hbase.CellScannable; 
輸入org.apache.hadoop.hbase.CellUtil; 
輸入org.apache.hadoop.hbase.HBaseConfiguration。
輸入org.apache.hadoop.hbase.HColumnDescriptor。
輸入org.apache.hadoop.hbase.HTableDescriptor。
輸入org.apache.hadoop.hbase.TableName。
輸入org.apache.hadoop.hbase.client.Admin。
輸入org.apache.hadoop.hbase.client.Connection。
輸入org.apache.hadoop.hbase.client.ConnectionFactory;
輸入org.apache.hadoop.hbase.client.Delete。
輸入org.apache.hadoop.hbase.client.Get; 
輸入org.apache.hadoop.hbase.client.HTable; 
輸入org.apache.hadoop.hbase.client.Put; 
輸入org.apache.hadoop.hbase.client.Result; 
輸入org.apache.hadoop.hbase.client.ResultScanner。
輸入org.apache.hadoop.hbase.client.Scan; 
輸入org.apache.hadoop.hbase.client.Table; 
輸入org.apache.hadoop.hbase.util.Bytes。

パブリッククラスTestHbase { 
	プライベート静的管理者の管理者= NULL; 
	プライベート静的接続の接続= NULL; 
	プライベート静的設定のconf = NULL; 
	静的{ 
		// HBaseの配置文件
		CONF = HBaseConfiguration.create()。
		conf.set( "hbase.zookeeper.quorum"、 "192.168.1.103"); 
		//获取连接对象
		{みてください
			接続= ConnectionFactory.createConnection(CONF)。
			//获取HBaseの管理员对象
			管理者= connection.getAdmin(); 
		}キャッチ(IOExceptionを電子){ 
			// TODO自動生成キャッチブロック
			e.printStackTrace(); 
		} 
	} 

	プライベート静的な無効近い(接続CONN、管理者の管理者)は、IOExceptionが{スロー
		するif(!connの= NULL){ 
			はconn.close(); 
		} 
		IF(!管理= NULL){ 
			admin.close()。
		}  
	} 

	//判断表是否存在
	パブリック静的ブールtableExist(文字列tableNameのは)のIOException {スロー
		ブールtableExists =のadmin.tableExists(TableName.valueOf(tableNameのを))。
		tableExistsを返します。
	} 

	//创建表 
	パブリック静的ボイドのcreateTable(文字列tableNameの、ストリング... CFS)のIOExceptionがスロー{ 
		(tableExist(tableNameの)){IF 
			;のSystem.out.println(「テーブルが既に存在する」)
			;戻る
		} 
		// CFS公式テーブルを示唆し、列グループが、複数を有することができる
		//テーブルディスクリプタ作成
		HTableDescriptorを=新しい新しいhTableDescriptor hTableDescriptor(TableName.valueOf(tableNameの)); 
		のために(CF2文字列:CFS){ 
			//列ディスクリプタを作成
			HColumnDescriptor hColumnDescriptor =新しい新しいHColumnDescriptor(CF2); 
// hColumnDescriptor.setMaxVersions; //バージョンの数を設定する(3)。
			hTableDescriptor.addFamily(hColumnDescriptor); 
		} 
		// CREATE TABLE操作
		admin.createTable(hTableDescriptor); 
	} 

	//削除テーブル
	のpublic static無効deleteTable(文字列tableNameのは)IOExceptionがスロー{ 
		IF {(tableExist(tableNameの)!)
			のSystem.out.println ( "テーブルは存在しません"); 
			を返す; 
		} 
	//追加、変更
	パブリック静的ボイドputdataを(文字列tableNameの、のrowKey文字、文字列CF 2、CN文字、文字列値)にIOException {スロー
		//オブジェクトテーブルを取得します
		//使用できなくテーブル(オフライン)を作成
		admin.disableTable(TableName.valueOf(tableNameの)); 
		//操作を削除
		admin.deleteTable(TableName.valueOf(tableNameのを)); 
		System.out.printlnはは( "テーブルを削除" ); 
	} 

//新しい新しいhtable =表のhtable(CONF、TableName.valueOf(tableNameの));時代遅れ
		表表Connection.GetTable =(TableName.valueOf(tableNameの)); 
		//オブジェクトのプット作成
		=新しいのPut(バイト置く入れを.toBytes(のrowKey)); 
		//データ追加
		put.addColumn(Bytes.toBytes(CF2)、Bytes.toBytes(CN)、Bytes.toBytes(値)); 
		//操作追加
		table.put(PUT)を; 
	} 

	//削除
	パブリック静的ボイドは(文字列tableNameの、文字列のrowKey、文字列CF2、CN String)を削除することにIOException {スロー
		オブジェクトテーブルを取得します// 
		テーブルテーブル= Connection.GetTable(TableName.valueOf(tableNameの)); 
		//削除するオブジェクトを作成
		、削除削除=新しい[削除]を(Bytes.toBytes(のrowKey)); //は、列全体の家族の削除
		delete.addColumns(Bytes.toBytes(CF)、Bytes.toBytes (CN)を); //は、 すべてのバージョンを削除
// delete.addColumn(Bytes.toBytes(CF)、 Bytes.toBytes(CN)); はお勧めしません、最新バージョンのみ削除
		//削除操作
		; Table.Delete(削除)
		)table.closeを(; 
	} 

	// -チャールズ全表スキャンは、最新バージョンのみ入手することができます
	パブリック静的な無効scanTable(文字列tableNameの)スローにIOException { 
		//取得表がオブジェクト
		、テーブルテーブル= Connection.GetTable(TableName.valueOf(tableNameの))
		//スキャナを構築
		スキャンのスキャンを;新しい新=()スキャン
		resultScanner resultScanner = table.getScanner(スキャン); 

		//反復データと印刷
		(結果結果:resultScanner)のために{//のrowKey 
			細胞[] =のresult.rawCells細胞(); 
			(セル電池用:細胞)細胞{//
				System.out.println( "RK:" + Bytes.toString(CellUtil.cloneRow(セル))+ "CF:"
						:(+ CellUtil.cloneFamily(セル))+ "CN" Bytes.toString 
						+ Bytes.toString(CellUtil.cloneQualifier(セル))+ "VALUE:" 
						)+ Bytes.toString(CellUtil.cloneValue(セル))。
			} 
		} 
		table.close()。
	} 

	//查-获取指定列族
	パブリック静的ボイドのgetData(文字列tableNameのは、文字列のrowKey、ストリングCF、文字列CN)がスローにIOException { 
		表表= connection.getTable(TableName.valueOf(tableNameの))。
		ゲットする=新しい取得(Bytes.toBytes(のrowKey)); 
		get.addColumn(Bytes.toBytes(CF)、Bytes.toBytes(CN))。
// get.addFamily(CF)。
// get.setMaxVersions(); //不传参默认是表结构内的maxversions
		get.setMaxVersions(2)。
		結果結果= table.get(取得)。
		セル[] =細胞のresult.rawCells()。
		{//セル(セル電池セル)のため
			のSystem.out.println( "RK:" + Bytes.toString(CellUtil.cloneRow(セル))+ "CF:" 
					+ Bytes.toString(CellUtil.cloneFamily(セル) )+ "CN:" 
					+ Bytes.toString(CellUtil.cloneQualifier(セル))+ "値:" 
					+ Bytes.toString(CellUtil.cloneValue(セル)))。
		} 
	} 

	公共の静的な無効メイン(文字列[]引数)にIOException {スロー
		//判断表是否存在
//するSystem.out.println(tableExist( "学生"))。
//するSystem.out.println(tableExist( "スタッフ")); 

		//创建表
//のcreateTable( "スタッフ"、 "情報"); 
//のSystem.out。


		//変更、追加
// putdata( "学生"、 "1001"、 "情報"、 "名前"、 "MCQを"); 

		//削除
//は、( "学生"、 "削除 1001"、 "情報"を、 " 名"); 

		//チェック-全表スキャン
// scanTable("学生"); 

		//チェック-指定された列グループ取得
		のgetData("学生"" 1001 ""情報"は、"名前を「); 
		
		/ /閉鎖リソース
		閉じる(接続、ADMIN); 
	} 
}

 

おすすめ

転載: www.cnblogs.com/mcq1999/p/11755883.html