使用 Apache Pig 从文本文件中获取备用行

Posted

技术标签:

【中文标题】使用 Apache Pig 从文本文件中获取备用行【英文标题】:Get alternate lines form a text file using Apache Pig 【发布时间】:2015-04-20 07:58:33 【问题描述】:

我有一个包含超过 1000 行文本的文本文件,我想处理该文本文件中的替代行。即,首先处理第 2 行,然后第 4 行,第 6 行。那么如何使用 Apache Pig 从文本文件中获取这些备用行?

【问题讨论】:

【参考方案1】:

您可以在复制到 HDFS 之前对文件进行预处理。 Sed 和 AWK 对于此类数据操作非常有用。

sed -n '0~2p' 'input file name' > 'output file name'

【讨论】:

【参考方案2】:

编写一个扩展 FilterFunc 的 Pig UDF。在 UDF 中使用计数器在每行到来时递增值。过滤具有奇数计数器值的行。

希望这会有所帮助。

【讨论】:

由于 Pig 将转换为 MapReduce 作业,因此无法保证文件中的行将按顺序处理。该文件将被分成不同的块并单独处理。 他提到该文件包含 1000 行 txt,因此我假设文件的总大小低于 64MB。你的观点也有道理。 实际上,有一些 UDF(检查 Enumerate from DataFu)可以做到这一点。我不确定它们会占用多少内存,因为许多聚合函数实际上会将整个包传递到内存中,并且可能不适合所有目的。

以上是关于使用 Apache Pig 从文本文件中获取备用行的主要内容,如果未能解决你的问题,请参考以下文章

如何从 apache pig 中的 part-r-0000 获取输出

使用 Pig latin 从文件中获取最大日期

使用 Apache Pig 将数据加载到 Hbase 表时,如何排除 csv 或文本文件中没有数据(只有空格)的列?

如何从 Apache Pig 中的文件中读取多个文件?

Apache Pig - 如何维护一个分布式查找表以供我的 python UDF 访问?

如何使用 apache pig 递归加载文件