Apache PIG:pigstorage不添加扩展名

时间:2014-04-29 07:53:27

标签: csv apache-pig

我正在尝试将我的猪脚本的结果存储在.csv文件中,但我无法将其工作。 输入文件是一个gzip压缩文件并包含日志行,我的pig脚本的结果应该是.csv文件。

这是我的剧本

REGISTER /Volumes/work/pig-0.12.1/lib/AdhesePigUDF.jar;
REGISTER /Volumes/work/pig-0.12.1/contrib/piggybank/java/piggybank.jar;
DEFINE ConvertDateToWeekday com.doggybites.adhese.pig.ConvertDateToWeekday();
inptln = load '/Volumes/work/code/git/hadoop-utils/log.log' as (line:chararray);

-- filter out tracks
inptlnfilt = filter inptln by INDEXOF(line, '.track|') == -1;
inptlns = foreach inptlnfilt generate STRSPLIT(line, '\\|') as parts;

inpt4 = foreach inptlns {
  weekday = (chararray)ConvertDateToWeekday(parts.$0);
  request = STRSPLIT((chararray)parts.$3, '/');
  generate weekday as weekday:chararray, parts.$2 as cookie:chararray,     FLATTEN(TOKENIZE(REPLACE((chararray)request.$9, '\\u003B', ','))) as interest:chararray;
}

inpt5 = group inpt4 by (weekday, interest, cookie);
inpt6 = foreach inpt5 generate group.weekday, group.interest, group.cookie, COUNT(inpt4) as impressionPerContact;
inpt7 = group inpt6 by (weekday, interest);
inpt8 = foreach inpt7 generate group.weekday, group.interest, SUM(inpt6.impressionPerContact) as impressions, COUNT(inpt6.impressionPerContact) as contacts;
STORE inpt8 INTO 'csvTESTING.csv' USING PigStorage(',');

但是它只生成一个csvTESTING.csv文件夹并仍然将part-r-00000文件放入其中,因此不是我期望的.csv文件。

我也试过用这个:

STORE inpt8 INTO 'csvTESTING.csv' USING org.apache.pig.piggybank.storage.CSVExcelStorage(',','NO_MULTILINE','WINDOWS');

但结果相同。

所以任何帮助都会受到赞赏。

感谢。

1 个答案:

答案 0 :(得分:2)

使用PigStorage指定输出目录,而不是输出文件名。结果文件将类似于part-m / r-xxxx。

您可以执行以下操作:

fs -getmerge outputdir csvTESTING.csv

但是这会创建一个本地文件。 您可以使用fs -put

将文件放回HDFS

请参阅http://pig.apache.org/docs/r0.11.0/cmds.html#fs