[英]Concatinating files with Timestamp in PIG
如何將時間標記與pig生成的輸出連接在一起。 我需要將Pig生成的輸出保存到帶有時間戳的另一個文件夾中,以便將來可以將其用作歷史數據。 我嘗試使用CurrentTime(),但它給了我這樣的錯誤:
2015-03-31 19:29:58,249 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1200: <file script.pig, line 1> Cannot expand macro 'CurrentTime'. Reason: Macro must be defined before expansion.
如何定義此宏?
這是代碼:
A = load '/user/root/b2.out';
X = FILTER A BY ($2 == 'Error') OR ($2=='Info') OR ($2=='Warning') OR ($2=='Critical');
D = FOREACH X GENERATE $0,$2,$4,$6,$8;
store D into CONCAT('/user/root/ELABD/finalout',CurrentTime());
CONCAT
只能在關系(也稱為foreach
語句)內部使用,因此您不能使用它來構建輸出文件位置。
我認為這里有兩種可能的解決方案:
在您的Pig腳本中使用%declare
語句,該語句使用bash中的date
的內容來獲取當前時間並將其用作參數,例如
%declare DATETIME `date +%Y-%m-%dT%H-%M-%S`
...
store D into '/user/root/ELABD/finalout/$DATETIME';
或者,使用Oozie之類的東西來安排您的豬工作,並讓Oozie根據日期/時間生成您的輸出位置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.