2017-02-14 6 views
0

я кодирующая каждое значение столбца в виде строки для загрузки данных в HBase, используя следующее:Как кодировать значения float/double/integer в HBase?

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)) 

выше будет сохранить номер в HBase таблицы в формате байта, в случае, если вы хотите сохранить номер в формате Строка Вы можете добавить toString к intNumber, как показано ниже

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