2
我有一個項目,我在其中計算帳戶的各種數據並將每個數據保存在不同的文件中(每個計算都有不同的腳本)。 然後,我需要創建一個結合賬戶所有數據的最終文件。 要做到這一點的一種方法是將每個輸出保存在不同的目錄中,而不是在最終腳本中使用模式加載每個目錄,按帳戶和打印加入(或共同組)。這裏的問題是,我需要告訴豬要加載哪些目錄。 我想製作一個更通用的腳本,因此可以很容易地添加更多的計算,所以我創建了一個父目錄並保存了所有輸出(在子目錄下)。然後我寫這個劇本通用連接腳本
attributes_data= load '$attributes_data' using CSVLoader;
union_data= group attributes_data by TRIM ($0);
final_output= foreach union_data generate
FLATTEN(Merge_Bags(attributes_data));
store order_data into '$final_attr' using AttributesStorer;
這種方式,我不需要告訴豬哪些文件,他應該加載,它只是加載我的輸出目錄下的所有子目錄。這裏的問題是,組合後的包中元組的順序不一致,所以我的最終結果沒有一致的順序,這是一個問題。
我真的會贊成你的想法,儘可能使腳本通用,同時在最終結果中保存一些數據的順序。
感謝
我認爲之後的分組不能保證排序 - [豬的ORDER BY文檔](https://pig.apache.org/docs/r0.11.1/basic.html#order-by)似乎並不樂觀。 – Eyal