Apache pig 哪些操作产生排序输出?

Apache pig 哪些操作产生排序输出?,apache-pig,Apache Pig,如果参数按键排序,则操作join和groupby会快得多 当输入被排序时,它们也自然地产生排序输出 问题是:pig是否保证输出被排序,或者我是否需要orderby由groupby生成的别名。。。使用“合并” Pig不保证订购,除非遵循orderby声明。由于Pig位于Hadoop之上,所以它不能直接控制输出的创建方式,包括其顺序 在洗牌阶段,键被划分到每个减速器,然后按每个减速器上的键进行排序。结果是,如果您依次检查每个减速器的输出(即,查看减速器0的输出,然后查看减速器1的输出,等等),您将发

如果参数按键排序,则操作
join
groupby
会快得多

当输入被排序时,它们也自然地产生排序输出


问题是:
pig
是否保证输出被排序,或者我是否需要
orderby
groupby生成的别名。。。使用“合并”

Pig不保证订购,除非遵循
orderby
声明。由于Pig位于Hadoop之上,所以它不能直接控制输出的创建方式,包括其顺序

在洗牌阶段,键被划分到每个减速器,然后按每个减速器上的键进行排序。结果是,如果您依次检查每个减速器的输出(即,查看减速器0的输出,然后查看减速器1的输出,等等),您将发现它们是按映射键排序的。对于清管器
分组依据
,映射键是您分组依据的字段。您经常会发现输出是按您想要的方式排序的

问题在于Pig无法控制底层的map,从而减少了洗牌和排序阶段。因此,分拣顺序可能会有所不同,Pig无需担心。我不知道在什么情况下,顺序会有所不同——可能是不同版本的Hadoop——但你不应该依赖它。一般来说,我发现排序是字典式的,这意味着整数上的
groupby
不会按您期望的方式排序。我还看到输出首先按长度排序,然后按字典排序,这可能不是您想要的


如果你发现它在你的发行版中对你有效,那么更多的权力给你,你可以跳过这两个MR工作。但是,如果更改Hadoop安装的某些内容,您的脚本可能无法移植,并且可能会被破坏。

因此,您需要按组对输出进行全局排序。。。使用“合并”?你能详细说明一下“它们自然也会产生分类输出”吗?我从未在排序输入上使用过这种连接/分组。@Ruslan:group和join算法为排序输入生成排序输出-除非以后做了一些愚蠢的事情。也许我不理解这个问题。你在一些官方文件中发现过这种行为吗?如果是,你为什么要问它是否有保证?:)你的问题似乎包含了答案:)