我需要使用Pig腳本實現的以下情形的邏輯。任何人都可以請幫忙提供一些關於如何做到這一點的想法。用於比較豬行的邏輯
輸入中包含一個列組名,其中包含一些其他數據和未知數據。這些數據需要被其先前的記錄數據取代。
輸入:
id,groupName
123,casc0001
124,casc0002
125,sale0001
126,unknown
127,nave9876
128,casc0001
129,sale0002
130,others
131,casc0004
132,unknown
133,unknown
134,others
135,nave1234
輸出:
123,casc0001
124,casc0002
125,sale0001
126,sale0001
127,nave9876
128,casc0001
129,sale0002
130,sale0002
131,casc0004
132,casc0004
133,casc0004
134,casc0004
135,nave1234
在上述輸入126,未知與125,sale0001代替。 130,其他需要被129,sale0002取代。 132,未知133,未知134,其他將被替換爲131,casc0004。
- 編輯 -
我試過豬的鉛功能。但它僅用於一次比較n行。這不能完全解決這個問題。
另一個工作的邏輯,但尋找優化的一個。
Cogroup for the same data set (like Dataset and Dataset_self)
-Filter Dataset.id=Dataset_self.id or Dataset_self.groupname='others' or Dataset_self.groupname='unknown'
-Generate IdDiff like (Dataset_self.id-Dataset.id), CASE when id=id then (id, group) else (id_self,group)
-Foreach (group id){
ordered = order by id,diff,group;
limited = ordered limit 1;
generate limited ;
}
你嘗試過什麼嗎? – Balduz
您是否在尋找REPLACE功能。 http://stackoverflow.com/questions/23774447/pig-script-replace-with-pipe-symbol – Abhi