级联(缓冲)实现

时间:2013-03-22 07:55:25

标签: cascading

我需要在级联hadoop中创建一个缓冲区。

假设我有字段:

  

member_id,amountpaid,diadnosis_id,diagnosis_description,superGrouper_id,superGrouper_descriptiion,grouperId,grouperDescription

我需要

  1. 对来自member_idsuperGrouper_id
  2. 的字段进行分组
  3. 使用每个管道将这些信息发送到缓冲区
  4. 缓冲区输出应为:member_id,来自superGrouper的最高付费排序,来自grouperId的最高付费排序,来自diagnosis_id的最高付款及其说明。
  5. 请帮我创建一个缓冲区。 提前致谢

2 个答案:

答案 0 :(得分:1)

您不需要自定义缓冲区。使用Cascading中内置的Max聚合器。 Cascading Docs

然后你需要在GroupBy之后运行Max。

pipe = new GroupBy(pipe, new Fields("member_id", "superGrouper_id");
pipe = new Every(pipe, new Fields("amountpaid"), new Max(new Fields("max_paid"));

答案 1 :(得分:0)

您可以执行以下操作:

pipe = new GroupBy(pipe, new Fields("member_id", "superGrouper_id"), new Fields("superGrouper", "grouperId", "")); 
pipe = new Every(pipe, FirstNBuffer(int n));

如果我错了,我很抱歉。你的问题不太清楚。