Apache pig:检查 cvs 输入中存在多少具有相同数字的行(任意组合)

Posted

技术标签:

【中文标题】Apache pig:检查 cvs 输入中存在多少具有相同数字的行(任意组合)【英文标题】:Apache pig: checking how many lines with the same numbers (in any combinations) exist in a cvs input 【发布时间】:2015-03-04 02:33:50 【问题描述】:

好的,伙计们,我在这里有点新。 我想运行一个 pig 脚本并检查 cvs 输入中存在多少具有相同数字(任意组合)的行

我确实了解如何将 CVS 放入 hadoop 以及如何通过 pig 解析它。 我确实了解如何遍历输入行,逻辑告诉我需要先对每个输入行进行排序,然后进行计数,但我不知道该怎么做

请看下面我的输入 CVS 以及我希望得到什么样的输出。 有人可以帮忙吗?

这是我的意见

123 321 213 456 564

我想得到以下结果

(3,1,2,3)(2,4,5,6)

【问题讨论】:

【参考方案1】:

让我告诉你一些想法。

如果以下是您的输入

123 321 213 456 564

您可以将输入分成 5 个以空格分隔的值,然后按升序排列每个值,如下所示。

123 123 123 456 456

然后你使用字数统计程序找到你想要的输出。

【讨论】:

感谢您回复我 您如何对每一行进行排序?我的意思是,如何在 pig 脚本中将输入行“321”更改为 123?这是我做不到的 为此您可以使用 UDF,您可以在 java 中编写自己的方法来执行此操作。你可以从here开始 好的,我希望避免UDF并直接通过pig来做,无论如何,谢谢你的帮助。

以上是关于Apache pig:检查 cvs 输入中存在多少具有相同数字的行(任意组合)的主要内容,如果未能解决你的问题,请参考以下文章

如果存在多个值,Apache Pig Group by 和过滤器?

PIG ERROR 2118:输入路径不存在

错误包 org.apache.pig.FilterFunc 不存在

Pig 的 UDF 中存在“in”会导致问题

如何在 apache pig 中将列添加到已经存在的表中

如何检查元组是不是包含 Apache Pig 中的元素?