Hbase rest api несколько вставок
Мы планируем использовать hbase rest api для выполнения вставок в таблицу hbase и хотели бы знать, есть ли способ вставить несколько столбцов в одно семейство столбцов или даже несколько семей столбцов за один вызов.
Если нет, так как мы планируем вставить около 100+ столбцов для конкретной записи (строки), это заставляет нас делать более 100 вызовов для одной записи строки
1 ответ
Решение
Вы можете вставить несколько столбцов для одного / нескольких семейств столбцов в одной операции PUT. --data
полезная нагрузка содержит key
а также CellSet
, CellSet содержит закодированное в base64 значение cf:columnname
а также $
содержит закодированное в base64 значение столбца.
Например:
{ "Row":[
{
"key":"d3d3LnNvbWVzaXRlLmNvbQ==",
"Cell":[
{
"column":"QXV0aG9yczp0ZXN0MQ==", // It can be cf1:name
"$":"c29tZURhdGE="
},
{
"column":"QXV0aG9yczp0ZXN0Mg==", // It can be cf2:address
"$":"bW9yZURhdGE="
}
]
}
]
}
Последняя команда curl будет выглядеть так:
curl -vi -X PUT \
-H "Accept: text/json" \
-H "Content-Type: text/json" \
-d '{"Row":[{"key":"d3d3LnNvbWVzaXRlLmNvbQ==","Cell":[{"column":"QXV0aG9yczp0ZXN0MQ==","$":"c29tZURhdGE="},{"column":"QXV0aG9yczp0ZXN0Mg==","$":"bW9yZURhdGE="}]}]}' \
"localhost:20550/table/rowkey"