Формат составного ключа строки HBase

Я пытаюсь импортировать несколько больших файлов .csv в HBase (в сумме> 1 ТБ). Данные выглядят как дамп из реляционной БД, но не имеют UID. Также я не хочу импортировать все столбцы. Я решил, что мне нужно сначала запустить пользовательское задание MapReduce, чтобы привести их в требуемый формат (выберите столбцы + сгенерировать UID), чтобы я мог импортировать их с помощью стандартного массового импорта hbase importtsv.

Мой вопрос: могу ли я просто создать свой собственный составной ключ строки, скажем storeID: year: UID, используя MapReduce, а затем передать его в импорт tsv? Скажем так, мои данные выглядят так:

row_key | price | quantity | item_id
A:2012:1|  0.99 |        1 |     001
A:2012:2|  0.99 |        2 |     012
B:2013:1|  0.99 |        1 |     004

Насколько я понимаю, HBase хранит все как байты, кроме меток времени. Он поймет, что это составной ключ ?!

Любые подсказки приветствуются!


person Illuminae    schedule 30.10.2017    source источник


Ответы (1)


Я задал тот же вопрос в Cloudera, и ответ можно найти здесь.

В общем, да, и никаких разделительных символов не требуется. Я использовал задание MapReduce для преобразования данных в следующий формат:

A2012:1,0.99,1,001 A2012:2,0.99,2,012

Затем с помощью importtsv и completebulkload данные были правильно загружены в нужные области HBase. Я предварительно разбил таблицу, используя storeID (A, B, C, ...).

person Illuminae    schedule 07.11.2017