2017-01-25 57 views
0

我想使用PIG加入3个表,然后加载到Hive表中。在存储数据之前,我可以使用转储在屏幕上显示数据。我使用下面的命令来存储数据,它失败了。使用PIG加载Hive表的问题

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 = LOAD 'ACCT' USING org.apache.hive.hcatalog.pig.HCatLoader(); account_master_fil =通过croft_source_sys_cd过滤account_master_ALL ==''ABC''; account_master =的foreach account_master_fil生成acct_master_key,(TRANS_DATE为空 '-999'?:TRANS_DATE)作为TRANS_DATE,(acct_data_1为空 '-999'?:acct_data_1)作为acct_data_1,(acct_data_2为空 '-999'?:acct_data_2)如acct_data_2,(acct_data_3为空 '-999'?:acct_data_3)作为acct_data_3,(acct_data_4为空 '-999'?:acct_data_4)作为acct_data_4,(acct_data_5为空 '-999'?:acct_data_5)作为acct_data_5,acct_m_ref_key, croft_source_sys_cd; acct_detail_all = LOAD'acct_detail_tb'USING org.apache.hive.hcatalog.pig.HCatLoader(); acct_detail =的foreach acct_detail_all生成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 =加入由(a_number,b_number,c_coded,a_type,c_number,c_digit),account_master由(acct_data_1,TRANS_DATE,acct_data_2,acct_data_3,acct_data_4,acct_data_5)acct_detail; ins_master_all = LOAD'ins_acct'USING org.apache.hive.hcatalog.pig.HCatLoader(); jnr_mas_ins_all =通过(acct_detail :: s_number)加入jnr_all,通过(acct_data_1)加入ins_master_all; jnr_mas_ins =的foreach 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; store jnr_mas_ins INTO'tartet_table'USING org.apache.hive.hcatalog.pig.HCatStorer();

+0

发布您的整个PIG脚本 –

+0

感谢inquisitive_mind,我只是通过添加我的脚本更新第一个流。请看一下。谢谢。 –

回答

0

看起来你错过了关系jnr_mas_ins_all。这是从哪里来的? jnr_mas_ins将是无效的,因为没有关系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 =通过(acct_detail :: s_number)加入jnr_all,ins_master_all通过(acct_data_1); –

+0

@kenHan现在有效吗? –

+0

我更新了脚本,当过去脚本时我错过了jnr_mas_ins_all部分。问题是一样的。非常感谢您的帮助。 –