HBase - чтение данных
Чтение данных с помощью HBase Shell
В get команда и get() метод HTableclass используются для чтения данных из таблицы в HBase. С помощьюget, вы можете получить только одну строку данных за раз. Его синтаксис следующий:
get ’<table name>’,’row1’
пример
В следующем примере показано, как использовать команду get. Просканируем первую строкуemp стол.
hbase(main):012:0> get 'emp', '1'
COLUMN CELL
personal : city timestamp = 1417521848375, value = hyderabad
personal : name timestamp = 1417521785385, value = ramu
professional: designation timestamp = 1417521885277, value = manager
professional: salary timestamp = 1417521903862, value = 50000
4 row(s) in 0.0270 seconds
Чтение определенного столбца
Ниже приведен синтаксис для чтения определенного столбца с использованием get метод.
hbase> get 'table name', ‘rowid’, {COLUMN ⇒ ‘column family:column name ’}
пример
Ниже приведен пример чтения определенного столбца в таблице HBase.
hbase(main):015:0> get 'emp', 'row1', {COLUMN ⇒ 'personal:name'}
COLUMN CELL
personal:name timestamp = 1418035791555, value = raju
1 row(s) in 0.0080 seconds
Чтение данных с помощью Java API
Чтобы прочитать данные из таблицы HBase, используйте get()метод класса HTable. Для этого метода требуется экземплярGetкласс. Следуйте инструкциям ниже, чтобы получить данные из таблицы HBase.
Шаг 1. Создайте экземпляр класса конфигурации
ConfigurationКласс добавляет файлы конфигурации HBase к своему объекту. Вы можете создать объект конфигурации, используяcreate() метод HbaseConfiguration класс, как показано ниже.
Configuration conf = HbaseConfiguration.create();
Шаг 2. Создайте экземпляр класса HTable
У вас есть класс под названием HTable, реализация таблицы в HBase. Этот класс используется для связи с одной таблицей HBase. При создании экземпляра этого класса он принимает в качестве параметров объект конфигурации и имя таблицы. Вы можете создать экземпляр класса HTable, как показано ниже.
HTable hTable = new HTable(conf, tableName);
Шаг 3. Создайте экземпляр класса Get
Вы можете получить данные из таблицы HBase, используя get() метод HTableкласс. Этот метод извлекает ячейку из заданной строки. Это требуетGetобъект класса как параметр. Создайте его, как показано ниже.
Get get = new Get(toBytes("row1"));
Шаг 4: прочтите данные
При извлечении данных вы можете получить одну строку по идентификатору, или получить набор строк по набору идентификаторов строк, или отсканировать всю таблицу или подмножество строк.
Вы можете получить данные таблицы HBase, используя варианты метода добавления в Get класс.
Чтобы получить определенный столбец из определенного семейства столбцов, используйте следующий метод.
get.addFamily(personal)
Чтобы получить все столбцы из определенного семейства столбцов, используйте следующий метод.
get.addColumn(personal, name)
Шаг 5: Получите результат
Получите результат, передав свой Get экземпляр класса к методу get объекта HTableкласс. Этот метод возвращаетResultобъект класса, содержащий запрошенный результат. Ниже приводится использованиеget() метод.
Result result = table.get(g);
Шаг 6. Считывание значений из экземпляра результата
В Result класс предоставляет getValue()для чтения значений из своего экземпляра. Используйте его, как показано ниже, чтобы прочитать значения изResult пример.
byte [] value = result.getValue(Bytes.toBytes("personal"),Bytes.toBytes("name"));
byte [] value1 = result.getValue(Bytes.toBytes("personal"),Bytes.toBytes("city"));
Ниже приведена полная программа для чтения значений из таблицы HBase.
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.util.Bytes;
public class RetriveData{
public static void main(String[] args) throws IOException, Exception{
// Instantiating Configuration class
Configuration config = HBaseConfiguration.create();
// Instantiating HTable class
HTable table = new HTable(config, "emp");
// Instantiating Get class
Get g = new Get(Bytes.toBytes("row1"));
// Reading the data
Result result = table.get(g);
// Reading values from Result class object
byte [] value = result.getValue(Bytes.toBytes("personal"),Bytes.toBytes("name"));
byte [] value1 = result.getValue(Bytes.toBytes("personal"),Bytes.toBytes("city"));
// Printing the values
String name = Bytes.toString(value);
String city = Bytes.toString(value1);
System.out.println("name: " + name + " city: " + city);
}
}
Скомпилируйте и выполните указанную выше программу, как показано ниже.
$javac RetriveData.java
$java RetriveData
На выходе должно получиться следующее:
name: Raju city: Delhi