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"
Другие вопросы по тегам