Вы можете обновить существующее значение ячейки, используя команду put . Для этого просто следуйте тому же синтаксису и укажите новое значение, как показано ниже.
put ‘table name’,’row ’,'Column family:column name',’new value’
Вновь данное значение заменяет существующее значение, обновляя строку.
пример
Предположим, что в HBase есть таблица emp со следующими данными.
hbase(main):003:0> scan 'emp' ROW COLUMN + CELL row1 column = personal:name, timestamp = 1418051555, value = raju row1 column = personal:city, timestamp = 1418275907, value = Hyderabad row1 column = professional:designation, timestamp = 14180555,value = manager row1 column = professional:salary, timestamp = 1418035791555,value = 50000 1 row(s) in 0.0100 seconds
Следующая команда обновит значение города сотрудника по имени Раджу до Дели.
hbase(main):002:0> put 'emp','row1','personal:city','Delhi' 0 row(s) in 0.0400 seconds
Обновленная таблица выглядит следующим образом: вы можете увидеть, что город Раджу был изменен на «Дели».
hbase(main):003:0> scan 'emp' ROW COLUMN + CELL row1 column = personal:name, timestamp = 1418035791555, value = raju row1 column = personal:city, timestamp = 1418274645907, value = Delhi row1 column = professional:designation, timestamp = 141857555,value = manager row1 column = professional:salary, timestamp = 1418039555, value = 50000 1 row(s) in 0.0100 seconds
Обновление данных с использованием Java API
Вы можете обновить данные в определенной ячейке, используя метод put () . Следуйте приведенным ниже инструкциям, чтобы обновить существующее значение ячейки таблицы.
Шаг 1: Создание класса конфигурации
Класс конфигурации добавляет файлы конфигурации HBase к своему объекту. Вы можете создать объект конфигурации с помощью метода create () класса HbaseConfiguration, как показано ниже.
Configuration conf = HbaseConfiguration.create();
Шаг 2: Создание класса HTable
У вас есть класс HTable , реализация Table в HBase. Этот класс используется для связи с одной таблицей HBase. При создании экземпляра этого класса он принимает объект конфигурации и имя таблицы в качестве параметров. Вы можете создать экземпляр класса HTable, как показано ниже.
HTable hTable = new HTable(conf, tableName);
Шаг 3: Создание класса Put
Для вставки данных в таблицу HBase используется метод add () и его варианты. Этот метод принадлежит Put , поэтому создайте экземпляр класса put . Этот класс требует имя строки, в которую вы хотите вставить данные, в строковом формате. Вы можете создать экземпляр класса Put, как показано ниже.
Put p = new Put(Bytes.toBytes("row1"));
Шаг 4: Обновите существующую ячейку
Метод add () класса Put используется для вставки данных. Требуются 3-байтовые массивы, представляющие семейство столбцов, квалификатор столбца (имя столбца) и значение для вставки, соответственно. Вставьте данные в таблицу HBase, используя метод add (), как показано ниже.
p.add(Bytes.toBytes("coloumn family "), Bytes.toBytes("column name"),Bytes.toBytes("value")); p.add(Bytes.toBytes("personal"), Bytes.toBytes("city"),Bytes.toBytes("Delih"));
Шаг 5: сохранить данные в таблице
После вставки необходимых строк сохраните изменения, добавив экземпляр put в метод put () класса HTable, как показано ниже.
hTable.put(p);
Шаг 6: Закройте экземпляр HTable
После создания данных в HBase Table закройте экземпляр HTable с помощью метода close (), как показано ниже.
hTable.close();
Ниже приведена полная программа для обновления данных в конкретной таблице.
import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.client.HTable; import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.util.Bytes; public class UpdateData{ public static void main(String[] args) throws IOException { // Instantiating Configuration class Configuration config = HBaseConfiguration.create(); // Instantiating HTable class HTable hTable = new HTable(config, "emp"); // Instantiating Put class //accepts a row name Put p = new Put(Bytes.toBytes("row1")); // Updating a cell value p.add(Bytes.toBytes("personal"), Bytes.toBytes("city"),Bytes.toBytes("Delih")); // Saving the put Instance to the HTable. hTable.put(p); System.out.println("data Updated"); // closing HTable hTable.close(); } }
Скомпилируйте и выполните вышеуказанную программу, как показано ниже.
$javac UpdateData.java $java UpdateData
Следующее должно быть выводом: