簡體   English   中英

在PIG中使用時間戳記合並文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM