HBase API를 사용하여 "테이블"에 대해 "지역 이름"을 가져 오려고합니다.hbase API를 사용하여 지역 이름을 가져 오는 올바른 방법
셋업은 아래에 언급되어
HBase와 의사 분산 설치 (버전 0.98.7)를.
하둡 2.5.1 설치.
테스트 용 테이블이 매우 적습니다. 사용 가능한 지역에 대한 정보는 아래 웹 UI에서 볼 수 있습니다. "test_table"테이블에 대응
"지역 명"의도적으로 강조되고있다.
이제 아래 코드를 사용하여 hbase의 Java 기반 API에서이 지역 정보를 얻으려고했습니다.
void scanTable(String tabName){
org.apache.hadoop.conf.Configuration config = HBaseConfiguration.create();
try{
HTable table = new HTable(config, tabName);
org.apache.hadoop.hbase.TableName tn = table.getName();
HRegionInfo hr = new HRegionInfo(tn);
System.out.println(hr.getRegionNameAsString());
table.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
}
"test_table"과 같이 테이블 이름을 전달할 때마다 regionName이 모든 실행마다 다르게 반환됩니다.
RUN 1 :
test_table,,1419247657866.77b98d085239ed8668596ea659a7ad7d.
RUN 2 :
test_table,,1419247839479.d3097b0f4b407ca827e9fa3773b4d7c7.
RUN 3 :
test_table,,1419247859921.e1e39678fa724d7168cd4100289c4234.
내가 "REGION_NAME"또는 내 접근 방식을 생성하는 잘못된 방법을 사용하고 있다고 가정 잘못된 것입니다. 주어진 테이블 이름에 대한 지역 정보를 얻는 것을 도와주십시오.
Thanks @ th30z. 올바른 지역 이름을 얻는 다른 방법을 찾았지만 작동합니다. 지역 이름을 출력하는 완전한 자바 메소드로 답을 업데이트하겠습니다. :) – Rohit
또한 0.96 이하 버전에서는 작동하지 않습니다. org.apache.hadoop.hbase.TableName은 0.96 / –