2017-02-14 3 views
0

내가 사용 HBase를 데이터를로드 할 문자열로 모든 열 값을 암호화 한 다음 데이터를 읽는 동안HBase에서 float/double/integer 값을 인코딩하는 방법은 무엇입니까?

put.add("columnFamily".getBytes(), new String(columnName).getBytes(), new String(value).getBytes()) 

는 이유 때문에 하나의 컬럼의 예외

java.lang.IllegalArgumentException: offset (0) + length (4) exceed the capacity of the array: 1 

을 얻고 있었다 것 그 float 값을가집니다 (실수하지 않은 경우). 이용 가능한 org.apache.hadoop.hbase.util.Bytes.toBytes(float) 같이 몇몇 방법이 있습니다 그러나 나는 그것을하는 방법을 모른다.

누군가가 float/double/integer 값을 어떻게 인코딩 할 수 있습니까? HBase에서 데이터를 더 읽으려면 동일한 예외가 발생하지 않도록하려면 어떻게해야합니까? 도움을 주시면 감사하겠습니다.

답변

2

아래처럼 뭔가를 할 수 있습니다

import org.apache.hadoop.hbase.util.Bytes 

val intNumber: Int = 100 

put.addColumn(Bytes.toBytes("column_family_name"), Bytes.toBytes("column_name"), Bytes.toBytes(intNumber)) 

위의 당신은 당신이 아래와 같이 intNumbertoString을 추가 할 수있는 문자열 형식의 번호를 저장하려면 경우, 바이트 형식으로 HBase를 테이블에 번호를 저장한다

put.addColumn(Bytes.toBytes("column_family_name"), Bytes.toBytes("column_name"), Bytes.toBytes(intNumber.toString))