2013-08-05 8 views
0

스캐너에서 얻은 항목을 정렬하는 방법이 있습니까? 내가 가지고있는 문제는 중복 행 ID를 줄이기 위해 접미사 인덱스가 있고 내가 스캔 할 때 완벽하게 오름차순 정렬 목록을 얻지 못한다는 것입니다. 당신이 0.881> 0.88를 볼 수 있습니다 아직 정확한 행 이후 30 개여 항목을 배치함에 따라Accumulo - 제대로 정렬 된 스캐너 결과 얻기

RowId: 2013-08-05 15:29:45.872  Value: 0 
RowId: 2013-08-05 15:29:45.879  Value: 1 
RowId: 2013-08-05 15:29:45.88   Value: 2 
RowId: 2013-08-05 15:29:45.881  Value: 11 
//The previous should be the following: 
RowId: 2013-08-05 15:29:45.88_a  Value: 3 

: 예를 들어, 나는 다음과 같은 무언가를 얻을. 정렬을 재정의 할 수있는 방법이 있습니까? 아니면 올바른 순서로 스캐너를 다시 가져 오는 편리한 방법이 있습니까?

답변

2

Accumulo의 항목은 사전 식으로 정렬됩니다. ASCII에서 '1'은 '_'보다 먼저 정렬되기 때문에 '88_a'보다 먼저 '881'이 나오는 이유입니다. Accumulo에서 숫자 정렬을 유지하려는 경우 한 가지 방법은 숫자를 고정 길이에 0으로 채우는 것입니다. 보유하고있는 최대 숫자가 999 인 경우 모든 숫자를 3 자로 만들어 '8'이 '008'이되고 '88'이 '088'이됩니다.

+0

타임 스탬프의 끝에 나노 세컨드를 덧붙여 야한다고 말하는가? – Mastergeek

+0

또한 나는 Accumulo가이 방법으로 분류하고 그 인세에 감사한다는 것을 알지 못했습니다. – Mastergeek

+0

예, 정확하게. 그것은 당신이 기대하는 방식으로 정렬됩니다. – billie

0

빌리가 말했듯이, Accumulo는 사전 편집법을 사용합니다. GitHub의에 project 당신이

이 프로젝트는 바이트 인코딩을 보존 정렬 순서로 간단하고 복잡한 키 데이터 다양한 유형의 직렬화 체크 아웃 할 수도 질서라는있다. 직렬화 된 바이트 배열을 정렬하면 기본 데이터 형식의 자연 정렬 순서와 동일한 순서가 생성됩니다.

불행히도 6 개월 후에 업데이트되지 않았습니다. 그것은 흥미있는 개념이다.

+0

재미있는 개념. 프로젝트를 참조 해 주셔서 감사합니다. – Mastergeek