尝试将json与hbase的rest网关一起使用时出现反序列化错误

r7knjye2  于 2021-06-09  发布在  Hbase
关注(0)|答案(1)|浏览(281)

我正在尝试使用hbase restapi。我看过这里的文件了(http://wiki.apache.org/hadoop/hbase/stargate),但它们似乎是不完整的(不包括json)和过时的。
我也遇到了这个要点,这正是我要说的。
以下是我试图发送的(插入)请求:
uri: http://server:8070/table/row1/data 标题: Content-Type :
application/json Accept : application/json http动词- POST 以及json负载(其中key、column和$都是base64编码的值):

{
    "Row": {

        "key": "NjQ=",
        "Cell": [{
            "column": "NjQ=",
            "$": "NjQ="
        }]
    }
}

下面是我得到的错误:

Error 500 Can not deserialize instance of java.util.List out of START_OBJECT token
 at [Source: org.mortbay.jetty.HttpParser$Input@3da0b822; line: 2, column: 5]
 (through reference chain: org.apache.hadoop.hbase.rest.model.CellSetModel["Row"])

这个错误似乎表明有些东西应该是数组而不是数组。我试着把方括号放在任何地方,除了稍微改变错误消息的性质之外,我什么也做不了。
我浏览了源代码,这似乎表明我的方括号的位置是正确的。然而,据我所知,整个请求看起来是正确的。不过,我对java不是很流利,所以可能我遗漏了什么。
在hbase rest网关中插入记录的正确json语法是什么?

xdyibdwo

xdyibdwo1#

现在是正确的格式:

{
    "Row": [{

        "key": "NjQ=",
        "Cell": [{
            "column": "NjQ=",
            "$": "NjQ="
        }]
    }]
}

哪里:
键-是行键
column-是列名
$—是存储在给定表、列和行中的数据。

相关问题