2016-10-28 5 views
0

행 키가 정수 여야하는 Hbase 스키마를 설계하고 있습니다. 나는 startrow와 함께 java에서 스캔 API를 사용하고 정수 값을 사용하여 endrow를 사용하려고합니다.Hbase 정수를 행 키 및 사전 식 순서로 사용하십시오.

'0' 패딩을 사용하여 문자열에서 내 정수를 변환 할 수 있다고 생각합니다. 그러나 이진수 표현을 사용하는 것보다 키가 훨씬 큽니다.

내 정수 (예 : int)를 byte[]으로 변환하면 startrow 및 endrow에 동일한 변환을 사용하면 스캔에서 예상 값이 반환됩니다.

답변 :

닐스는 anwser을 포기하고 여기 확인을 발견

Java Comparator for byte array (lexicographic)

HBase를가 byte[]에서 int 추출하고이를 비교한다.

답변

1

hbase-client 라이브러리에서 org.apache.hadoop.hbase.util.Bytes를 사용하여이를 수행 할 수 있습니다. 바이트 배열에서

int로 :

Bytes.toInt(byteArray) 

을 INT에서 바이트 배열 :

Bytes.toBytes(intvalue) 

내가 실제로 내가 된 로우를 조회하는 데 필요한 16 진수 값을 생성하는 온라인 도구를 만들었습니다 hbase 쉘의 ID.

+0

감사합니다. Nils. i1과 i2에 대해이 변환을 사용하면 byte [] b1과 b2를 얻을 수 있습니다. ibase mvera

+0

그렇게 생각합니다. (b1 == b2의 크기이지만 원하는 순서대로 내용이 사전 식으로 비교됩니다.) 그러나 hbase는 새로운 삽입/삭제에 대한 사전 식 순서를 유지하므로 스캔 할 때 걱정할 필요가 없습니다. – nilsmagnus