我正在尝试使用其余的api将多个列/行发布到我的hbase集群。我可以一次发布1列没有问题,但似乎无法接受多列/行。
这很好用
数据:
{
"Row":{
"@key":"www.somesite.com",
"Cell":{
"@column":"ColFam:Col1",
"$":"someData"
}
}
}
呼叫:
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
根据api,我应该可以同时发布多行/列。
多列数据:
{
"Row":
{
"key":"www.somesite.com",
"Cell":[
{
"column":"ColFam:Col1",
"$":"someData"
},
{
"column":"ColFam:Col2",
"$":"moreData"
}
]
}
}
多行数据:
{
"Row":[
{
"key":"www.somesite.com",
"Cell":[
{
"column":"ColFam:Col1",
"$":"someData"
}
]
},
{
"key":"www.someothersite.com",
"Cell":[
{
"column":"ColFam:Col1",
"$":"moreData"
}
]
}
]
}
我尝试使用以下网址:
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
无济于事。文档说使用false-row-key,所以我也尝试过:
http://somesite.com:8080/TestTable/false-row-key
仍然没有运气。
我每次都会得到同样的错误:
upload completely sent off: 124 out of 124 bytes
HTTP/1.1 503 Service Unavailable
任何想法?
答案 0 :(得分:5)
所以你要做的就是base64编码所有的json值。
{
"Row":[
{
"key":"d3d3LnNvbWVzaXRlLmNvbQ==",
"Cell":[
{
"column":"QXV0aG9yczp0ZXN0MQ==",
"$":"c29tZURhdGE="
},
{
"column":"QXV0aG9yczp0ZXN0Mg==",
"$":"bW9yZURhdGE="
}
]
}
]
}
这对我来说应该是显而易见的,因为其余api的返回值都是base64编码的。
答案 1 :(得分:1)
JIRA HBASE-9435给出了这个答案。 需要删除' @'并添加' []',命令如下:
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
另外," www.somesite.com"," ColFam:Col1"," someData"需要是base64编码。