Hbase Scan 用法


  • public static void main(String[] args) throws IOException {
  • //Scan類常用方法說明
  • //指定需要的family或column ,如果沒有調用任何addFamily或Column,會返回所有的columns;
  • // scan.addFamily();
  • // scan.addColumn();
  • // scan.setMaxVersions(); //指定最大的版本個數。如果不帶任何參數調用setMaxVersions,表示取所有的版本。如果不掉用setMaxVersions,只會取到最新的版本.
  • // scan.setTimeRange(); //指定最大的時間戳和最小的時間戳,只有在此范圍內的cell才能被獲取.
  • // scan.setTimeStamp(); //指定時間戳
  • // scan.setFilter(); //指定Filter來過濾掉不需要的信息
  • // scan.setStartRow(); //指定開始的行。如果不調用,則從表頭開始;
  • // scan.setStopRow(); //指定結束的行(不含此行);
  • // scan.setBatch(); //指定最多返回的Cell數目。用於防止一行中有過多的數據,導致OutofMemory錯誤。
  •  
  • //過濾器
  • //1、FilterList代表一個過濾器列表
  • //FilterList.Operator.MUST_PASS_ALL -->and
  • //FilterList.Operator.MUST_PASS_ONE -->or
  • //eg、FilterList list = new FilterList(FilterList.Operator.MUST_PASS_ONE);
  • //2、SingleColumnValueFilter
  • //3、ColumnPrefixFilter用於指定列名前綴值相等
  • //4、MultipleColumnPrefixFilter和ColumnPrefixFilter行為差不多,但可以指定多個前綴。
  • //5、QualifierFilter是基於列名的過濾器。
  • //6、RowFilter
  • //7、RegexStringComparator是支持正則表達式的比較器。
  • //8、SubstringComparator用於檢測一個子串是否存在於值中,大小寫不敏感。
  •  
  • HTable table=(HTable) getHTablePool().getTable( "tb_stu");
  • Scan scan= new Scan();
  • scan.setMaxVersions();
  • //指定最多返回的Cell數目。用於防止一行中有過多的數據,導致OutofMemory錯誤。
  • scan.setBatch( 1000);
  •  
  • //scan.setTimeStamp(NumberUtils.toLong("1370336286283"));
  • //scan.setTimeRange(NumberUtils.toLong("1370336286283"), NumberUtils.toLong("1370336337163"));
  • //scan.setStartRow(Bytes.toBytes("quanzhou"));
  • //scan.setStopRow(Bytes.toBytes("xiamen"));
  • //scan.addFamily(Bytes.toBytes("info"));
  • //scan.addColumn(Bytes.toBytes("info"), Bytes.toBytes("id"));
  •  
  • //查詢列鏃為info,列id值為1的記錄
  • //方法一(單個查詢)
  • // Filter filter = new SingleColumnValueFilter(
  • // Bytes.toBytes("info"), Bytes.toBytes("id"), CompareOp.EQUAL, Bytes.toBytes("1"));
  • // scan.setFilter(filter);
  •  
  • //方法二(組合查詢)
  • //FilterList filterList=new FilterList();
  • //Filter filter = new SingleColumnValueFilter(
  • // Bytes.toBytes("info"), Bytes.toBytes("id"), CompareOp.EQUAL, Bytes.toBytes("1"));
  • //filterList.addFilter(filter);
  • //scan.setFilter(filterList);
  •  
  • ResultScanner rs = table.getScanner(scan);
  •  
  • for (Result r : rs) {
  • for (KeyValue kv : r.raw()) {
  • System.out.println(String.format( "row:%s, family:%s, qualifier:%s, qualifiervalue:%s, timestamp:%s.",
  • Bytes.toString(kv.getRow()),
  • Bytes.toString(kv.getFamily()),
  • Bytes.toString(kv.getQualifier()),
  • Bytes.toString(kv.getValue()),
  • kv.getTimestamp()));
  • }
  • }
  •  
  • rs.close();
  • }

 


免責聲明!

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



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