1
단일 열 값 필터를 적용한 후 HBase에서 선택한 열 패밀리의 행을 가져 오려고합니다. 내 테이블 'Projectdata'에서HBase에서 출력 형식 지정
나는
name|story|type|keyword
aritra| kl |ac |happy
nill |jk |bc |sad
bob |pk |dd |happy
같은 열 가족이있다. 나는 그들의 '키워드'가 행복 할 때 '이름'의 목록을 얻고 싶다. 내 코드는 다음과 같습니다.
public class ByCategory {
public static void main(String [] args) throws Exception{
Configuration conf = HBaseConfiguration.create();
HTable table = new HTable(conf, "Projectdata");
SingleColumnValueFilter filter_by_happycategory = new SingleColumnValueFilter(
Bytes.toBytes("keyword"),
Bytes.toBytes(""),
CompareOp.EQUAL,
Bytes.toBytes("happy")
);
FilterList filterListk =new FilterList();
filterListk.addFilter(filter_by_happycategory);
Scan scanh = new Scan();
scanh.addFamily(Bytes.toBytes("name"));
scanh.addFamily(Bytes.toBytes("keyword"));
scanh.setFilter(filterListk);
ResultScanner scannerh = table.getScanner(scanh);
String key = new String("~");
String keyFlag = new String("~");
System.out.println("Scanning table... ");
for(Result resulth: scannerh){
//System.out.println("getRow:"+Bytes.toString(resulth.getRow()));
key = "~";
for(KeyValue kv:resulth.raw())
{
if(key.compareTo(keyFlag)==0){
key=Bytes.toString(kv.getRow());
System.out.print("Key: "+key);
}
System.out.print(Bytes.toString(kv.getValue()));
}
System.out.println("");
}
scannerh.close();
System.out.println("complete");
table.close();
}
}
나는이
Key: 102happybob
Key: 109happyaritra
같은 출력에 geting 오전하지만 난 단지 이름을 싶어. 나는 얻으 려하고있다
Key: 102bob
Key: 109aritra
hbase에서 가능합니까? 실제로 내 잘못은 어디 있습니까?
귀하의 질문은 지저분하고 명확하지 않습니다. 당신은 'name'열에서 {aritra, nill, bob, jakob}과 같은 값을 갖고 'keyword'열 ({happy, sad, emotional} 등)에서 'scanh.addFamily (Bytes.toBytes name ")); '이 칼럼이나 컬럼도 마찬가지입니까? –
죄송합니다. 질문을 수정했습니다. 이 모든 것들은 컬럼 패밀리입니다. – Yonex
여전히 명확하지 않은데, columnfamily가 열 이름없이 값을 가질 수있는 방법은 행 키 또는 열 이름입니까? 이전 대답을 제거하고 질문이 명확 해지면 대답 할 것입니다. –