Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы_часть2.doc
Скачиваний:
5
Добавлен:
22.04.2019
Размер:
12.36 Mб
Скачать

2.16 Счетчики в субд Hbase

В Hbase часто используется для сбора различной статистики и поэтому для упрощения работы со счетчиками в HBase реализованы соответствующие механизмы.

Long increment ColumnValue(

Byte[] row,

Byte[] family,

Byte[] qualifier,

Long amount) throws IOException

Result increment(Increment increment) throws IOException – для возможности увеличения нескольких счетчиков за один вызов

Increment(){}

Increment( byte[] row)

Increment addColumn(byte[] family, byte[] qualifier, long amount);

Counters

Daily 20111219

Weekly

Montly

HTable table = new HTable (conf, “counters”);

Long cnt1=table.IncrementColumnValue(

Bytes.ToBytes(“20111219”),

Bytes.ToBytes(“daily”),

Bytes.ToBytes(“hits”),1);

Increment inc1=new Increment(

Bytes.ToBytes(“20111219”));

Inc1.addColumn(bytes.toBytes(“daily”), Bytes.ToBytes(“clicks”),1);

Inc1.addColumn(Bytes.ToBytes(“daily”),Bytes.ToBytes(“hits”),1);

Inc1.addColumn(Bytes.ToBytes(“weekly”),Bytes.ToBytes(“hits”),1);

Result res1=table.increment(inc1);

2.17 Создание таблицы в субд Hbase

HBase предоставляет два способа создания таблиц, которые используют HBase клиент для подключения HBase мастера. Одним из них является использование экземпляра класса HBaseAdmin. HBaseAdmin предоставляет некоторые методы для создания, изменения и удаления таблиц и столбцов семей. Другой способ заключается в использовании экземпляра HTable класса. Этот класс предоставляет некоторые методы для работы с данными как вставка, изменение и удаление строк и ячеек.

Таким образом, для того, чтобы создать HBase таблицу, необходимо подключить HBase мастер инициализации экземпляра HBaseAdmin. HBaseAdmin требует экземпляр HBaseConfiguration.

Для того чтобы описать HBase схемы, создаются экземпляры HColumnDescriptor для каждого столбца семьи. В дополнение к именам столбцов семьи, HColumnDescriptor позволяет задавать различные параметры, такие как maxVersions, тип сжатия, TimeToLive и bloomFilter. Затем, мы можем создать HBase таблицу, вызывая CreateTable.

Например:

HBaseConfiguration conf = new HBaseConfiguration();

conf.set("hbase.master","localhost:60000");

HBaseAdmin hbase = new HBaseAdmin(conf);

HTableDescriptor desc = new HTableDescriptor("TEST");

HColumnDescriptor meta = new HColumnDescriptor("personal".getBytes());

HColumnDescriptor prefix = new HColumnDescriptor("account".getBytes());

desc.addFamily(meta);

desc.addFamily(prefix);

hbase.createTable(desc);

2.18 Схема данных в субд Hbase

Модель данных HBase представляет собой многомерную карту (map), в которой значения (ячеек таблицы) проиндексированы по четырем ключам:

value = Map (TableName, RowKey, ColumnKey, Timestamp)

где:

TableName является строкой;

RowKey и ColumnKey бинарные значения (типа Java byte[] );

Timestamp представляет собой 64-разрядное целое число (Java типа long );

value не интерпретируемый массив байт (Java ™ тип byte[] );

Двоичные данные кодируются в Base64 для передачи.

Ключ строки является первичным ключом таблицы. Строки сортируются по ключу в лексикографическом порядке.

Информация хранится в структурированной таблице колонки семей, которые вы можете распределить по категориям. Каждый столбец-семья может иметь произвольное число членов, определенные метки (или классификаторы).

Схема HBase таблицы определяет колонку семей, но приложения могут создавать новые члены на лету, когда вы вставляете строку в таблице. Для столбца семьи, разные строки в таблице могут иметь различное число членов. Другими словами, HBase поддерживает динамическую модель (схему) данных.