用scala代码中的值=\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00填充Hbase表

用scala代码中的值=\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00填充Hbase表,hbase,Hbase,当我试图通过scala程序将一列为Double的行键放入Hbase表时,我在输出文件(Hbase表)中看到了这种32位表示。这完全停止了我的工作 请告知我们如何在Hbase表中获得“Double”类型字段的正确表示形式 与此相关的代码如下:我是否遗漏了什么 VarValue_Output: Double p(3).toDouble final val colVarValueBytes = Bytes.toBytes("VarValue_Output") put.add(cfDataBytes,

当我试图通过scala程序将一列为Double的行键放入Hbase表时,我在输出文件(Hbase表)中看到了这种32位表示。这完全停止了我的工作

请告知我们如何在Hbase表中获得“Double”类型字段的正确表示形式

与此相关的代码如下:我是否遗漏了什么

VarValue_Output: Double
p(3).toDouble
final val colVarValueBytes = Bytes.toBytes("VarValue_Output")
put.add(cfDataBytes, colVarValueBytes, Bytes.toBytes(Data.VarValue_Output)
谢谢 维贾亚·库马尔·帕博图(Vijaya Kumar Pabothu)

这是预期的行为。 您已经保存了
Double
数据类型,但是HBase shell(我假设您正在使用它)对它一无所知(HBase中的所有内容都表示为字节数组)。因此,默认情况下,它试图从字节数组中提取字符串,并显示一些unicode符号的非信息列表:

Bytes.toBytes(“15.0”)
不等于
Bytes.toBytes(15.0)

  • 尝试将其保存为字符串,转换为字节数组(这样您就可以在基本shell中读取)
  • 从应用程序中读取它,并确保正在转换列值
    字节。toDouble

  • 请查看下面的代码,请告知我的错误所在。def CONVERTTOTOUT(传感器:传感器):(ImmutableBytesWritable,Put)={val dateTime=sensor.TimeStamp\u Output val rowkey=sensor.ToolName\u Output+“\u”+dateTime val Put=new Put(Bytes.toBytes(rowkey))Put.add(cfDataBytes,colLookupBytes,Bytes.toBytes(sensor.Lookup))put.add(cfDataBytes,colVarNameBytes,Bytes.toBytes(sensor.VarName_Output))put.add(cfDataBytes,colVarValueBytes,Bytes.toBytes(sensor.VarValue_Output))return(new ImmutableBytesWritable(Bytes.toBytes(rowkey)),put)}定义——final val colvarvaluevaluebytes=Bytes.toBytes(“VarValue_Output”)case类传感器(查找:String,ToolName_输出:String,VarName_输出:String,VarValue_输出:Double,TimeStamp_输出:String)对象传感器扩展可序列化的{def parseSensor(str:String):传感器={val p=str.split(“,”)传感器(p(0),p(1),p(2),p(3)。toDouble,p(4))}