【问题标题】:Insert Json into Hbase as JSON - Scala将 Json 作为 JSON 插入 Hbase - Scala
【发布时间】:2018-12-05 18:43:23
【问题描述】:

我想使用 scala 将 json 对象插入到 Hbase 单元中,目前我可以使用下面的代码插入值,但想知道我如何能够将整个 Json 对象插入到 Hbase 单元中。

import org.apache.hadoop.hbase.util.Bytes.toBytes
val hTable:HTable = new HTable(configuration, "tablename")
val p = new Put(Bytes.toBytes("row1"))
p.add(Bytes.toBytes("info"),Bytes.toBytes("firstname)",Bytes.toBytes("Jim"))
hTable.put(p)
hTable.close()

【问题讨论】:

    标签: json scala apache-spark hbase


    【解决方案1】:

    您可以将 json 对象编码为字符串。然后将此字符串编码为字节数组。然后将此字节数组放入Hbase。伪代码会是这样的:

    json = createYourJson()
    jsonString = json.toString
    jsonBytyes = Bytes.toBytes(jsonString)
    put.add(yourColumnFamily, yourQualifier, jsonBytes)
    

    当从 hbase 加载值时,你必须颠倒这个顺序。伪代码会是这样的:

    jsonBytes = hbase.get(table, columnFamily, qualifier)
    jsonString = Bytes.toString(jsonBytes)
    json = Json.parse(jsonString)
    

    【讨论】:

    • 我得到一个重载方法错误,因为不能应用于 (Array[Byte]),下面是代码 p.add(Bytes.toBytes("columnfamily"),Bytes.toBytes("qualifier) ",Bytes.toBytes("jsonBytes")) hTable.put(m)
    • 是的,您应该添加列族和限定符。我编辑了我的答案。
    • 是的,尝试如下 m.add(Bytes,toBytes("columnfamily"),Bytes.toBytes("qualifier"),Bytes.toBytes(jsonBytes)) - 同样的问题
    • Bytes,toBytes("columnfamily") 这是逗号吗?
    • 抱歉,键盘问题。这修复了它。我现在可以插入,但它没有以 json 格式插入?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-09
    • 1970-01-01
    • 2022-08-14
    • 2019-11-20
    • 2018-11-28
    • 2014-02-26
    相关资源
    最近更新 更多