HBase - обновить данные
Обновление данных с помощью HBase Shell
Вы можете обновить существующее значение ячейки, используя 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. Создайте экземпляр класса конфигурации
ConfigurationКласс добавляет файлы конфигурации HBase к своему объекту. Вы можете создать объект конфигурации, используяcreate() метод HbaseConfiguration класс, как показано ниже.
Configuration conf = HbaseConfiguration.create();
Шаг 2. Создайте экземпляр класса HTable
У вас есть класс под названием HTable, реализация таблицы в 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 закройте 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
На выходе должно получиться следующее:
data Updated