pig拉丁语:加载时如何丢弃任何文件中的第一行?

ddrv8njm  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(320)

我一直在使用Pig从一段时间以来,想知道如何不考虑第一行,而加载一个文件。我有一个有头的文件。所以我应该忽略第一行,转到下一行对日期列和所有列进行处理。怎么办?
谢谢

vaqhlq81

vaqhlq811#

如果只加载一个文件,给定的解决方案将很好地工作。但是,如果您加载目录中的所有文件(也可以通过简单地确保输入是目录路径),给定的解决方案将只切断第一个文件的顶部。
要删除每个文件中的头文件,可能需要使用csvexcelstorage

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

sg3maiej2#

如果您有pig版本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;

新的输入文件应该包含您的数据,而不包含头。请注意,rank操作符是pig0.11的新操作符,因此在早期版本中不起作用。
编辑:请注意,此解决方案仅适用于单个文件,如果要加载目录,请尝试其他方法。

相关问题