HBASE Rest API(Stargate)发布多个单元格/行

Eul*_*367 2 hbase stargate

我试图使用其余的api将多个列/行发布到我的hbase集群.我可以一次发布1列没有问题,但似乎无法接受多列/行.

这很好用

数据:

{
   "Row":{
      "@key":"www.somesite.com",
      "Cell":{
         "@column":"ColFam:Col1",
         "$":"someData"
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

呼叫:

curl -v -X PUT -H "Content-Type: application/json" --data '{"Row": { "@key":"www.somesite.com", "Cell": { "@column":"ColFam:Col1", "$":"someData" } } }' http://somesite.com:8080/TestTable/www.somesite.com/ColFam:Col1
Run Code Online (Sandbox Code Playgroud)

根据api,我应该能够同时发布多行/列.

多列数据:

{
   "Row":
      {
         "key":"www.somesite.com",
         "Cell":[
            {
               "column":"ColFam:Col1",
               "$":"someData"
            },
            {
               "column":"ColFam:Col2",
               "$":"moreData"
            }
         ]
      }
}
Run Code Online (Sandbox Code Playgroud)

多行数据:

{
   "Row":[
      {
         "key":"www.somesite.com",
         "Cell":[
            {
               "column":"ColFam:Col1",
               "$":"someData"
            }
         ]
      },
      {
         "key":"www.someothersite.com",
         "Cell":[
            {
               "column":"ColFam:Col1",
               "$":"moreData"
            }
         ]
      }

   ]
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下网址:

http://somesite.com:8080/TestTable/www.somesite.com/ColFam:Col1
http://somesite.com:8080/TestTable/www.somesite.com/ColFam
http://somesite.com:8080/TestTable/www.somesite.com
Run Code Online (Sandbox Code Playgroud)

无济于事.文档说使用false-row-key所以我也尝试过:

http://somesite.com:8080/TestTable/false-row-key
Run Code Online (Sandbox Code Playgroud)

仍然没有运气.

我每次都得到同样的错误:

upload completely sent off: 124 out of 124 bytes
HTTP/1.1 503 Service Unavailable
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Eul*_*367 5

所以你要做的就是base64编码所有的json值.

{
   "Row":[
      {
         "key":"d3d3LnNvbWVzaXRlLmNvbQ==",
         "Cell":[
            {
               "column":"QXV0aG9yczp0ZXN0MQ==",
               "$":"c29tZURhdGE="
            },
            {
               "column":"QXV0aG9yczp0ZXN0Mg==",
               "$":"bW9yZURhdGE="
            }
         ]
      }
   ]
}
Run Code Online (Sandbox Code Playgroud)

这对我来说应该是显而易见的,因为来自其余api的返回值都是base64编码的.