PIG Latin:加载如何丢弃任何文件中的第一行?

时间:2013-10-01 08:38:02

标签: hadoop apache-pig

我以前一直在使用PIG,并想知道在加载文件时如何不考虑第一行。我有一个有标题的文件。所以我应该忽略第一行并转到下一行来处理日期列和所有。如何解决这个问题?

由于

2 个答案:

答案 0 :(得分:4)

如果您有猪版本0.11,您可以试试这个:

input_file = load 'input' USING PigStorage(',') as (row1:chararay, row2:chararray);

ranked = rank input_file;

NoHeader = Filter ranked by (rank_input_file > 1);

New_input_file = foreach NoHeader generate row1, row2;

New_input_file应该包含没有标头的数据。请注意,rank运算符是pig 0.11的新功能,因此这不适用于早期版本。

编辑:请注意,此解决方案仅适用于单个文件,如果您正在加载目录,请尝试使用其他内容。

答案 1 :(得分:1)

如果只加载1个文件,给定的解决方案将运行良好。但是,如果您加载目录中的所有文件(这也可以通过简单地确保输入是目录路径),给定的解决方案将只切断第一个文件的顶部。

要删除每个文件中的标题,您可能需要使用CSVExcelStorage

my_input = load 'inputfileordir' USING CSVExcelStorage(',', 'default', 'NOCHANGE', 'SKIP_INPUT_HEADER')