在猪中传递参数

时间:2014-06-24 12:33:01

标签: apache-pig

我正在使用grunt shell版本猪0.11.1

运行这个猪脚本

我有这些数据:

Dec 2 15:13:52 mailserver1 sendmail[1882]: pB2KCqu1001882: from=<info@example.com>, size=9544, class=0, nrcpts=1, msgid=<201112022012.pB2KCqu1001882@mailserver1.example.com>, proto=ESMTP, daemon=MTA, relay=relay1.example.com [10.0.20.6]

使用此我正在加载关系:

SRC = LOAD 'pg-log.txt' USING PigStorage(' ') AS ( month: chararray, day: chararray, time: chararray, mailserver: chararray, pid: chararray, sendmailid: chararray, src: chararray, size: chararray, classnumber: chararray, nrcpts: chararray, msgid: chararray, proto: chararray, daemon: chararray, relay: chararray ); 我试图让这个下面的步骤在shell中运行,它似乎在今年采用参数$ Year,我在shell中使用它来初始化年份:

%default YEAR date +%Y;

但它不起作用

--T1 = FOREACH SRC GENERATE sendmailid, FORMAT('%s-%s-%s %s', $YEAR, month, day, time) as timestamp;

所以现在我试图像下面这样硬编码2014年,我仍然得到错误:

T1 = FOREACH SRC GENERATE sendmailid, FORMAT('%s-%s-%s %s', 2014, month, day, time) as timestamp;

ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1070: Could not resolve FORMAT using imports: [, org.apache.pig.builtin., org.apache.pig.impl.builtin.]

1 个答案:

答案 0 :(得分:0)

错误告诉您FORMAT不存在。在这种情况下,PIG中没有FORMAT功能。

您可以使用CONCAT执行此操作。放置多个CONCAT有点难看,但你没有纯PIG的选择。否则你可以创建一个UDF。