2015-01-20 5 views
0

WholeRowIterator를 사용하여 행을 필터링 한 후 열을 필터링하려고합니다. 이는 보관할 행을 결정하는 데 유용한 열을 제거하지만 검사에서 반환 된 데이터에는 유용하지 않습니다.WholeRowIterator를 다른 반복자의 소스로 사용하는 방법은 무엇입니까?

WholeRowIterator는 nice를 RegExFilter와 같은 다른 반복기의 원본으로 재생하는 것처럼 보이지 않습니다. WholeRowIterator에 의해 키/값이 인코딩된다는 것을 알고 있습니다.

이 반복자 스택을 작동시키는 데 가능한 해결책이 있습니까?

감사합니다.

답변

1

일반적으로 WholeRowIterator는 행 (많은 키 - 값)을 단일 키 - 값으로 직렬화하는 것과 관련하여 "스택"의 마지막 반복자입니다. 당신은 아마 그것을 한 번 이상하고 싶지 않을 것입니다. 그러나 다음과 같이 가정 해 보겠습니다.

Iterator를 작성하고 WholeRowIterator 메소드를 사용하여 SortedMap에 각 키 - 값을 비 직렬화하고 SortedMap을 수정 한 다음 하나의 키 - 값으로 다시 다시 설정하고, 그리고 그것을 돌려 보내라. 이 반복자는 WholeRowIterator에 주어진 우선 순위보다 높은 우선 순위를 할당 받아야합니다.

또는 WholeRowIterator을 확장하고 encodeRow(List<Key>,List<Value>) 메서드를 재정 의하여 처음부터 원하지 않는 열을 직렬화하지 않을 수 있습니다. 이렇게하면 첫 번째 접근 방식에서 추가로 직렬화 및 비 직렬화를 줄일 수 있습니다.

+0

응답 해 주셔서 감사합니다. 나는 또 다른 잠재적 인 해결책을 찾았고 대신 RowFilter를 사용하도록 코드를 변환했습니다. 그것은 모든 후속 반복자의 소스로 사용할 수있는 것 같습니다. –