2017-01-25 6 views
0

Я хочу использовать PIG, присоединяю 3 таблицы и загружаю их в таблицу Hive. перед хранением данных я могу показать данные на экране с помощью дампа. Я использую команду ниже для хранения данных, это не удалось.Проблема для загрузки таблицы Hive с использованием PIG

store jnr_mas_ins INTO 'table_name' USING org.apache.hive.hcatalog.pig.HCatStorer(); 

ошибка:

2017-01-25 10:58:48,487 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1002: Unable to store alias jnr_mas_ins 
Details at logfile: /export/home/pig_1485359450881.log 

Я искал этот сайт, кто-то предложил использовать следующую команду:

store jnr_mas_ins INTO 'hdfs://fullpath' USING org.apache.hive.hcatalog.pig.HCatStorer(); 


001 : Error setting output information. Cause : NoSuchObjectException(message:default.hdfs://fullpath table not found) 
Details at logfile: /export/home/pig_1485359450881.log 

бы вы помочь решить эту проблему, заранее спасибо ниже - сценарий, который я использовал для заполнения таблицы.

account_master_ALL = НАГРУЗИТЬ 'ACCT' ИСПОЛЬЗОВАНИЕ org.apache.hive.hcatalog.pig.HCatLoader(); account_master_fil = фильтр account_master_ALL by croft_source_sys_cd == '' ABC ''; account_master = foreach account_master_fil генерировать acct_master_key, (trans_date имеет значение null? '-999': trans_date) как trans_date, (acct_data_1 имеет значение null? '-999': acct_data_1) как acct_data_1 (acct_data_2 имеет значение null? '-999': acct_data_2) как acct_data_2, (acct_data_3 имеет значение null? '-999': acct_data_3) как acct_data_3, (acct_data_4 имеет значение null? '-999': acct_data_4) как acct_data_4, (acct_data_5 имеет значение null? '-999': acct_data_5) как acct_data_5, acct_m_ref_key, croft_source_sys_cd; acct_detail_all = LOAD 'acct_detail_tb' ИСПОЛЬЗОВАНИЕ org.apache.hive.hcatalog.pig.HCatLoader(); acct_detail = foreach acct_detail_all generate c_number, b_number, a_number, c_coded, a_type, c_digit, s_number, r_type, r_cd, s_qty, s_b_cost, trade_qty, t_cost, p_date, load_date; jnr_all = присоединить acct_detail (a_number, b_number, c_coded, a_type, c_number, c_digit), account_master by (acct_data_1, trans_date, acct_data_2, acct_data_3, acct_data_4, acct_data_5); ins_master_all = LOAD 'ins_acct' ИСПОЛЬЗОВАНИЕ org.apache.hive.hcatalog.pig.HCatLoader(); jnr_mas_ins_all = join jnr_all by (acct_detail :: s_number), ins_master_all by (acct_data_1); jnr_mas_ins = Еогеасп jnr_mas_ins_all генерируют acct_master_key, как acct_master_key, ins_master_key как ins_master_key, 'ABC', как code_dev, c_number как c_number, b_number как b_number, a_number как src_a_number, c_coded, как c_coded, a_type как a_type, c_digit как c_digit, s_number как s_number, r_type как r_type, r_cd как r_cd, s_qty как s_qty, s_b_cost как s_b_cost, trade_qty как trade_qty, t_cost как t_cost, p_date как p_date, CurrentTime() как load_date, 'PIG_USER' как create_userid, CurrentTime() как create_date, CurrentTime() как f_date; магазин jnr_mas_ins INTO 'tartet_table' ИСПОЛЬЗОВАНИЕ org.apache.hive.hcatalog.pig.HCatStorer();

+0

Сообщение весь ваш PIG сценарий –

+0

благодаря inquisitive_mind, я просто обновил первый поток, добавив мой сценарий на него. взгляни, пожалуйста. Благодарю. –

ответ

0

Похоже, что вам не хватает отношения jnr_mas_ins_all. Откуда это? jnr_mas_ins будет emtpy, так как нет никакого отношения jnr_mas_ins_all. Это должно быть ins_master_all?

ins_master_all = LOAD 'ins_acct' USING org.apache.hive.hcatalog.pig.HCatLoader(); 
jnr_mas_ins = foreach jnr_mas_ins_all generate acct_master_key as acct_master_key, ins_master_key as ins_master_key, 'ABC' as code_dev, c_number as c_number, b_number as b_number, a_number as src_a_number, c_coded as c_coded, a_type as a_type, c_digit as c_digit, s_number as s_number, r_type as r_type, r_cd as r_cd, s_qty as s_qty, s_b_cost as s_b_cost, trade_qty as trade_qty, t_cost as t_cost, p_date as p_date, CurrentTime() as load_date, 'PIG_USER' as create_userid, CurrentTime() as create_date, CurrentTime() as f_date; 
+0

спасибо inquisitive_mind. пропущенный - jnr_mas_ins_all = join jnr_all by (acct_detail :: s_number), ins_master_all by (acct_data_1); –

+0

@kenHan Это работает сейчас? –

+0

Я обновил скрипт, я пропустил часть jnr_mas_ins_all, когда прошёл скрипт. проблема такая же. Большое спасибо за Вашу помощь. –