表の挿入停止を続行
HBaseのシェル>無効 'TBNAME'
スナップショット
のHBaseシェル>スナップショット'TBNAME'、 'tbsnap'
新しい名前のクローニングスナップショット
のHBaseシェル> clone_snapshot「tbsnap」、 「newtb」
スナップショットの削除
のHBaseシェル> delete_snapshot「tableSnapshot」を
データ変換プログラムを書きます
輸入java.util.HashMapを; 輸入はjava.util.List; 輸入java.util.Map; 輸入org.apache.commons.lang.StringUtils。 輸入org.apache.hadoop.hbase.Cell; 輸入org.apache.hadoop.hbase.CellUtil; 輸入org.apache.hadoop.hbase.HBaseConfiguration。 輸入org.apache.hadoop.hbase.client.HTableInterface。 輸入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.filter.FilterList; 輸入org.apache.hadoop.hbase.util.Bytes。 輸入org.springframework.data.hadoop.hbase.HbaseTemplate。 輸入com.alibaba.fastjson.JSONObject。 輸入lombok.extern.slf4j.Slf4j。 @ SLF4J パブリック クラスHbaseUtil { 公共の 静的な 無効saveTemperature2hbase(文字列のTBNAME、文字列のrowKey、文字列のV 、HbaseTemplate hbaseTemplate){ hbaseTemplate.execute(TBNAME、(表) - > { 入れ置く = 新しいのPut(Bytes.toBytes(のrowKey)); put.addColumn(Bytes.toBytes("XXX")、Bytes.toBytes( "XXX" )、Bytes.toBytes(V))。 table.put(置きます)。 返す 真; }); } パブリック 静的地図<文字列リスト<地図<文字列オブジェクト>>> getColumnDataFromHbase(文字列テーブル 、文字列ファミリー、文字列、HbaseTemplate hbaseTemplate){ 戻り hbaseTemplate.execute(テーブル、hTableInterface - > { スキャンスキャン = 新しいスキャン() ; scan.setCacheBlocks(真); scan.setCaching( 30000 ); scan.setBatch( 300); scan.addColumn(family.getBytes()、column.getBytes())。 FilterList filterList = 新しいFilterList(); scan.setFilter(filterList)。 地図 <文字列、リスト<地図<文字列、オブジェクト>>> TempDataを= 新しいのHashMap <> (); ResultScannerスキャナ = NULL ; 試す{ スキャナ = hTableInterface.getScanner(スキャン)。 用(結果結果:スキャナ){ バイト []行= result.getRow()。 文字列のrowKey= Bytes.toString(行)。 リスト <細胞>細胞=のresult.listCells()。 用(セルセル:セル){ マップの<string、オブジェクト>データ= 新しい HashMapの<> (); 文字列ID = Bytes.toString(CellUtil.cloneQualifier(セル))。 文字列値 = Bytes.toString(CellUtil.cloneValue(セル))。 log.info( "のrowKey:{}、カラム:{}、値:{}" 、のrowKey、ID、値)。 JSONObject JSON = 新しいJSONObject(); // 填写のJSON 文字列JSTR = json.toJSONString()。 log.info(JSTR)。 saveTemperature2hbase( "XXX" 、のrowKey、JSTR、hbaseTemplate)。 } } } 最後に{ 場合(NULL!= スキャナ) scanner.close(); } 戻りTempDataをします。 }); } 公共の 静的な 無効メイン(文字列[]引数){ HbaseTemplate hbaseTemplate = 新しいHbaseTemplate()。 org.apache.hadoop.conf.Configuration CONF = HBaseConfiguration.create()。 conf.set( "hbase.zookeeper.quorum"、 "127.0.0.1" ); conf.set( "hbase.zookeeper.port"、 "2181" ); hbaseTemplate.setConfiguration(CONF)。 hbaseTemplate.setAutoFlush(真の); getColumnDataFromHbase( "XXX"、 "XXX"、 "XXX" 、hbaseTemplate)。 } }
元のテーブルの削除
のHBaseシェルを>「tableNameの」を削除