2016-12-09 3 views
0

Я запускаю сценарий свиньи для хранения данных. У меня есть код, как это:Хранение данных в Hbase с помощью свиньи

TOP = foreach GROUPED_DATA { 
    SORTED = order WEIGHTED_DATA BY review_weight DESC; 
    best_review = limit SORTED 1; 
    generate group as businessid, flatten (best_review); 
    } 

Этот код дает мне высокий номинальный обзор для каждого бизнеса и я получаю возвращается кортеж, как это:

ID,  weight, ID, user_id, count 
(zzxb0Y , 34.2, zzxb0Y, dVK7EAJd, 5) 

Я пытаюсь сохранить это в HBase с помощью код:

STORE TOP INTO 'hbase://sample_data' USING org.apache.pig.backend.hadoop.hbase.HBaseStorage(sample_col:weight, sample_col:user_id, sample_col:count); 

я получаю индекс из связанного ошибки:

java.lang.Exception: java.io.IOException: java.lang.IndexOutOfBoundsException: Index: 3, Size: 3 
at org.apache.hadoop.mapred.LocalJobRunner$Job.runTasks(LocalJobRunner.java:462) 
at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:529) 
`Caused by: java.io.IOException: java.lang.IndexOutOfBoundsException: Index: 3, Size: 3 

Я хочу хранить данные в Hbase, в которых идентификатор является ключом, и для каждого идентификатора в столбце_family хранятся три значения. Пожалуйста, расскажите мне, как это сделать.

ответ

1

Отношение «Top» имеет 5 столбцов , но ваша таблица hbase имеет 3 столбца, так как первым будет ключ строки, поэтому должно быть только 4 столбца в «Верх» .regenerate сверху отношение и вывод должен быть ID, вес, идентификатор_пользователя, граф (zzxb0Y, 34,2, dVK7EAJd, 5)

затем использовать: -

МАГАЗИНА сверху в 'HBase: // sample_data' иСПОЛЬЗОВАНИЕ org.apache .pig.backend.hadoop.hbase.HBaseStorage (sample_col: weight, sample_col: user_id, sample_col: count);

Смежные вопросы