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 key
为val thePut = new Put(Bytes.toBytes(3))
。出于某种原因,当我将其保存到HBase
时,它会保存行{} \x00\x00\x00\x03
而不是整数3
。
我在这里做错了什么:val thePut = new Put(Bytes.toBytes(3))
?由于HBase
中的所有内容都是字节数组,因此我将整数3转换为上述代码中的一个字节。
答案 0 :(得分:0)
我能够在hbase shell中修复它。我只需要做deleteall 'TABLE_NAME', "\x00\x00\x00\x03"
使用\x00\x00\x00\x03
周围的双引号(\x00\x00\x00\x03
是我的行键)保留该行键的原始数据类型(这是32位表示的整数3)。因此,要删除整行,请使用deleteall
并保留行键数据类型,使用""
。