我正在使用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.]
答案 0 :(得分:0)
错误告诉您FORMAT不存在。在这种情况下,PIG中没有FORMAT功能。
您可以使用CONCAT执行此操作。放置多个CONCAT有点难看,但你没有纯PIG的选择。否则你可以创建一个UDF。