2016-06-09 87 views
1

我有一個問題與Apache的豬分組數據的問題。豬羣由兩個字段產生奇怪的結果

加載數據提供:

client_trace_send = LOAD '/user/hduser1/adm_project/client_trace50.csv' using PigStorage(',') as (code:chararray, client_id:int, loc_ts:int, length:int, op:chararray, err_code:int, time:long, thread_id:INT); 

Limitting和檢查數據:

client_trace_send_small = LIMIT client_trace_send 10; 
DUMP client_trace_send_small; 

數據加載:

(msg_snd,0,1,46,enrol_req,-1,1414250523591,9) 
(res_rcv,0,1,25,enrol_resp,,1414250523655,9) 
(msg_snd,1,2,48,query_queue,-1,1414250523655,9) 
(res_rcv,1,2,14,err,19,1414250523661,9) 
(msg_snd,1,3,59,peek_req,-1,1414250523661,9) 
(res_rcv,1,3,13,err,0,1414250523662,9) 
(msg_snd,1,4,59,peek_req,-1,1414250523662,9) 
(res_rcv,1,4,13,err,0,1414250523663,9) 
(msg_snd,1,5,59,peek_req,-1,1414250523663,9) 

現在,我想小組說,在字段中的數據「的client_id 「和」loc_ts「。

GROUPED = GROUP client_trace_send_small by (client_id,loc_ts); 

檢查結果:

DUMP GROUPED; 

而其奇特:

((0,1),{(msg_snd,0,1,46,enrol_req,-1,1414250523591,9)}) 
((1,2),{(msg_snd,1,2,48,query_queue,-1,1414250523655,9)}) 
((1,3),{(msg_snd,1,3,59,peek_req,-1,1414250523661,9)}) 
((1,4),{(msg_snd,1,4,59,peek_req,-1,1414250523662,9)}) 
((1,5),{(msg_snd,1,5,59,peek_req,-1,1414250523663,9)}) 
((8,28493),{(msg_snd,8,28493,62,pop_req,-1,1414251764157,16)}) 
((9,25976),{(msg_snd,9,25976,66,query_sender,-1,1414251764148,17)}) 
((19,28250),{(msg_snd,19,28250,64,pop_req,-1,1414251764152,27)}) 
((31,27977),{(msg_snd,31,27977,65,peek_req,-1,1414251764152,39)}) 

有禮物甚至不出現在加載的數據值。 對於我希望像第一組:

((0,1),{(msg_snd,0,1,46,enrol_req,-1,1414250523591,9),{(res_rcv,0,1,25,enrol_resp,,1414250523655,9)}) 

這是怎麼回事錯在這裏?

感謝您的幫助,提前致謝。

問候

+0

你傾銷'client_trace_send_small'和分組'send_small'! – 54l3d

+0

Ooops請原諒我,這是一個複製和粘貼錯誤。事實上,我做了client_trace_send_small組。否則,我會在grunt控制檯收到錯誤,因爲send_small不存在。 – Redo

+0

請編輯您的問題,以便其他人可以理解。 – 54l3d

回答

0

這是因爲LIMIT採取隨機組數據:

不保證其中的元組將被退回,而元組返回 可以從一個運行改變下一個。

而且,因爲在你的素文字2 DUMP,因此豬會分裂成流水線兩條管道,每一個單獨執行LIMIT。因此,您會爲每個子管道獲取兩個不同的數據集。

但我們確信的是,轉儲的數據顯然來自輸入文件,並且它們來自最多10行(如果文件行數更少,則爲<)。

您可以檢查您的explain計劃和它的explanation

+0

哦,慚愧。非常感謝! – Redo

相關問題