우리는 hbase 테이블을 가지고 있으며 그것을 스캔해야합니다. 특정 열이 정확한 값을 갖고 정확한 접두사가있는 다른 열이있는 모든 행을 찾아야합니다. 다음과 같이 표시됩니다.ColumnPrefixFilter를 SingleColumnValueFilter로 스캔하고 모든 열을 가져 오는 방법은 무엇입니까?
SingleColumnValueFilter filterA =
new SingleColumnValueFilter(COLUMN_FAMILY, COLUMN_1, CompareFilter.CompareOp.EQUAL, Bytes.toBytes(2L));
Filter filterB = new ColumnPrefixFilter(COLUMN_2_PREFIX);
FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL);
filterList.addFilter(filterA);
filterList.addFilter(filterB);
Scan scan = new Scan();
scan.setFilter(filterList);
개별적으로 필터가 작동합니다. filterA
은 COLUMN_1
의 값이 2L
인 행을 반환합니다. filterB
은 COLUMN_2
이있는 행을 반환합니다. 그러나 함께 그들은 아무것도 반환하지 않습니다. 이 필터들을 함께 결합 할 수 있습니까? 아니면 내가 잘못한거야?
동일한 조건의 두 번째 질문 : ColumnPrefixFilter
을 사용하고 모든 열을 가져올 수 있습니까? 나는 COLUMN_2
이 존재하는 행을 찾고 다른 모든 열도 얻는다는 것을 의미합니까?
아마도 바보 같은 질문이지만 두 조건을 모두 충족하는 행을 실제로 가지고 있는지 확인 했습니까? (OR 연산을 원한다면 연산자를 MUST_PASS_ONE으로 변경해야합니다.) –
물론입니다. 두 조건을 모두 충족시키는 행이 있습니다. 나는'ColumnPrefixFilter'가 필터의 다른 컬럼과 작동하기를 원하지 않는다고 생각합니다. 'COLUMN_2' 컬럼으로 값을 필터링하기 위해'filterA'를 변경하면 코드가 잘 작동하기 때문입니다. – JarrLorck