如何在 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))