如何在hbase中对浮点/双精度/整数值进行编码?

btxsgosb  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(334)

我将每个列值编码为字符串,以便使用以下命令在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读取数据时不会出现相同的异常吗?任何帮助都将不胜感激。

u59ebvdq

u59ebvdq1#

您可以执行以下操作:

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表中的数字,如果您想以字符串格式保存数字,可以添加 toStringintNumber 就像下面一样

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

相关问题