使用 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 获取输出
使用 Apache Pig 将数据加载到 Hbase 表时,如何排除 csv 或文本文件中没有数据(只有空格)的列?