Mapreduce apachepig中的嵌套组

Mapreduce apachepig中的嵌套组,mapreduce,apache-pig,Mapreduce,Apache Pig,我是ApachePig的新手,希望通过编写pig脚本来实现自底向上的cubing。 然而,这需要我以分层的方式进行分组 例如,如果我的数据是(交换、符号、日期、股息)形式,其中股息是一个度量,其余是维度,我希望首先按交换对数据进行分组并打印总股息,然后再按交换和符号等进行分组 一种方法是在脚本中编写所有可能的分组,例如按交换分组、按符号分组、按(交换、符号)分组等。但是,这似乎不是最理想的。是否有一种方法(例如)先按exchange分组,然后对每个exchange组内部按符号分组,以生成(exc

我是ApachePig的新手,希望通过编写pig脚本来实现自底向上的cubing。 然而,这需要我以分层的方式进行分组

例如,如果我的数据是(交换、符号、日期、股息)形式,其中股息是一个度量,其余是维度,我希望首先按交换对数据进行分组并打印总股息,然后再按交换和符号等进行分组

一种方法是在脚本中编写所有可能的分组,例如按交换分组、按符号分组、按(交换、符号)分组等。但是,这似乎不是最理想的。是否有一种方法(例如)先按exchange分组,然后对每个exchange组内部按符号分组,以生成(exchange)和(exchange,symbol)的聚合,因为这样会更有效

这里讨论了类似的问题,但没有回答我的问题:
谢谢

这一切都取决于你对“最优”的定义。你的直觉是,如果你首先按(交换、符号、红利)进行粒度分组,然后将结果分组以通过(交换、符号),那么通过(交换)得到的结果是正确的,因为你将做更少的算术运算。然而,你的地图减少流量将明显次优。这将需要3个map reduce作业,每个输出提供下一个输入


如果独立地进行每个分组,则只需要一个map reduce作业。映射器将为每个分组发出键值对,而reducer将分别处理聚合每种类型。一个MapReduce作业意味着从磁盘读取和写入的字节更少,设置和拆除Hadoop作业所花费的时间也更少。除非你正在做一个计算密集型的过程(计算平均值肯定不是),否则这些因素,尤其是磁盘I/O,是一个作业需要多长时间的最重要考虑因素。

这一切都取决于你对“最优”的定义。你的直觉是,如果你首先按(交换、符号、红利)进行粒度分组,然后将结果分组以通过(交换、符号),那么通过(交换)得到的结果是正确的,因为你将做更少的算术运算。然而,你的地图减少流量将明显次优。这将需要3个map reduce作业,每个输出提供下一个输入


如果独立地进行每个分组,则只需要一个map reduce作业。映射器将为每个分组发出键值对,而reducer将分别处理聚合每种类型。一个MapReduce作业意味着从磁盘读取和写入的字节更少,设置和拆除Hadoop作业所花费的时间也更少。而且,除非您正在进行一个计算量非常大的过程(而计算平均值肯定不是),否则这些因素,尤其是磁盘I/O,是作业所需时间的最重要考虑因素。

能否提供您期望的输出示例。您是希望每个组排列有一个输出目录,还是希望每行中每个组都有一个文件的总数?您能提供一个您期望的输出示例吗。您希望每个组排列有一个输出目录,还是只需要一个文件,每个行中每个组都有总计?它在Pig中也称为多重查询。一次读取多次使用。在Pig中也称为多重查询。阅读一次,使用多次。