如何在 HBase 中编码 float/double/integer 值?
How to encode float/double/integer values in HBase?
我使用以下代码将每个列值编码为字符串以在 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
在读取数据时,因为其中一列具有浮点值(如果我没记错的话)。像 org.apache.hadoop.hbase.util.Bytes.toBytes(float)
这样的方法很少,但我不知道该怎么做。
有人能告诉我如何对 float/double/integer 值进行编码,以便进一步从 HBase 读取数据时不会出现相同的异常吗?
任何帮助将不胜感激。
您可以执行如下操作:
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 table 中,如果您想以字符串格式保存数字,您可以将 toString
添加到 intNumber
,如下所示
put.addColumn(Bytes.toBytes("column_family_name"), Bytes.toBytes("column_name"), Bytes.toBytes(intNumber.toString))
我使用以下代码将每个列值编码为字符串以在 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
在读取数据时,因为其中一列具有浮点值(如果我没记错的话)。像 org.apache.hadoop.hbase.util.Bytes.toBytes(float)
这样的方法很少,但我不知道该怎么做。
有人能告诉我如何对 float/double/integer 值进行编码,以便进一步从 HBase 读取数据时不会出现相同的异常吗? 任何帮助将不胜感激。
您可以执行如下操作:
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 table 中,如果您想以字符串格式保存数字,您可以将 toString
添加到 intNumber
,如下所示
put.addColumn(Bytes.toBytes("column_family_name"), Bytes.toBytes("column_name"), Bytes.toBytes(intNumber.toString))