복붙노트

[HADOOP] 자바를 사용하여 HBase를 어떤 세 임의 규정 검색

HADOOP

자바를 사용하여 HBase를 어떤 세 임의 규정 검색

내 HBase를 표는 다음과 같다 :

hbase(main):040:0> scan 'TEST' 
ROW               COLUMN+CELL                                                                                                
4                 column=data:108, timestamp=1399972960190, value=-240.0                                                     
4                 column=data:112, timestamp=1399972960138, value=-160.0                                                     
4                 column=data:12, timestamp=1399972922979, value=2                                                           
4                 column=data:120, timestamp=1399972960124, value=-152.0                                                     
4                 column=data:144, timestamp=1399972960171, value=-240.0                                                     
4                 column=data:148, timestamp=1399972960152, value=-240.0                                                     
4                 column=data:16, timestamp=1399972909606, value=9                                                           
4                 column=data:8, timestamp=1399972917978, value=6                 

모든 4S는 행 ID와 108,112,12 어디에 ... 규정이다. 나는이 테이블 TEST에서 무작위로 세 개의 한정자를 가져 싶다.

나는 모든 규정이 아닌 임의의 세 가지 규정을 가져올 수 있습니다. 나는 이것을 달성 할 수있는 자바에있는 쉘 명령 또는 API가 있습니까?

해결법

  1. ==============================

    1.그냥 것에 대해 경우 처음 세 행은 3으로 설정 LIMIT로 스캔 쉘 명령을 사용합니다 :

    그냥 것에 대해 경우 처음 세 행은 3으로 설정 LIMIT로 스캔 쉘 명령을 사용합니다 :

    hbase(main):001:0> scan 'demo', {LIMIT => 3}
    

    당신이 자바 API를 사용하여 작업을 수행하고자하는 경우, 세 번째 반복 후 중단 ResultScanner을 통해 루프를 설정합니다. 간단하고 쉬운.

    public static void main(String[] args) throws IOException {
    
            Configuration conf = HBaseConfiguration.create();
            HTable table = new HTable(conf, "demo");
            Scan s = new Scan();
            ResultScanner rs = table.getScanner(s);
            int check = 0;
            for(Result r : rs){
                if(++check > 3)
                    break;              
                for (KeyValue kv : r.raw()){                    
                    System.out.println("Qualifier : " + Bytes.toString(kv.getQualifier()));
                }                           
            }
            rs.close();
            table.close();
        }
    }
    

    당신이 3 개 임의의 행을 취득하고자하는 경우에, 위의 접근 방식 RandomRowFilter를 사용합니다.

    HTH

  2. from https://stackoverflow.com/questions/23627847/retrieve-any-three-random-qualifier-in-hbase-using-java by cc-by-sa and MIT license