【问题标题】:Row Key Being displayed as `\x00\x00\x00\x03` rather than integer行键显示为 `\x00\x00\x00\x03` 而不是整数
【发布时间】:2016-06-29 16:59:17
【问题描述】:
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)
                                }
                        })
                }

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

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

【问题讨论】:

  • 题主好像和题无关?
  • @TheArchetypalPaul 好的,我已经更改了标题。对于那个很抱歉。你碰巧知道问题是什么吗?
  • 不知道,抱歉。我会说清楚它是写出一个 32 位整数的二进制表示,虽然
  • 是的,我就是这么想的。我现在必须对此进行更多研究...谢谢!

标签: scala hbase


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2012-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-30
    • 2023-03-16
    • 1970-01-01
    • 2016-04-27
    相关资源
    最近更新 更多