将来の閲覧を容易にするために、我々は一般的に使用される操作の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); } }