行键显示为“\ x00 \ x00 \ x00 \ x03”而不是整数

时间:2016-06-29 16:59:17

标签: scala hbase

lines.foreachRDD{rdd =>
                        val temp = rdd.map(_._2)
                        temp.collect().foreach(a => {
                                if (a == "Insurance:dental") {
                                        val thePut = new Put(Bytes.toBytes(3))
                                        thePut.add(Bytes.toBytes("insurance"), Bytes.toBytes("dental"), Bytes.toBytes("metlife"))
                                        table.put(thePut)
                                }
                        })
                }

在上面的scala代码中,row keyval thePut = new Put(Bytes.toBytes(3))。出于某种原因,当我将其保存到HBase时,它会保存行{} \x00\x00\x00\x03而不是整数3

我在这里做错了什么:val thePut = new Put(Bytes.toBytes(3))?由于HBase中的所有内容都是字节数组,因此我将整数3转换为上述代码中的一个字节。

1 个答案:

答案 0 :(得分:0)

我能够在hbase shell中修复它。我只需要做deleteall 'TABLE_NAME', "\x00\x00\x00\x03"使用\x00\x00\x00\x03周围的双引号(\x00\x00\x00\x03是我的行键)保留该行键的原始数据类型(这是32位表示的整数3)。因此,要删除整行,请使用deleteall并保留行键数据类型,使用""