gpt4 book ai didi

hadoop 减少上下文和另一个输入文件的侧连接

转载 作者:可可西里 更新时间:2023-11-01 15:38:57 28 4
gpt4 key购买 nike

我有以下简单的 reducer :

int i = 0;
int numPurchases = 0;
IntWritable count = new IntWritable();

@Override
protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {

i = 0;
for (IntWritable val : values) {
i = i + Integer.parseInt(val.toString());
numPurchases ++;
}
count.set(i/numPurchases);
numPurchases =0;
context.write (key, count);
}

上面只是将以下内容返回到输出:

客户编号 |平均购买价格

上面的 reducer 从文件 File1 中获取数据。两个问题:

1) 我可以在输出文件中添加购买数量 numPurchases 吗?任何关于如何实现这一目标的指示将不胜感激

2) 现在我有另一个文件 File2。 File2 基本上具有以下内容:

客户编号 |客户名称 |客户电话 |客户地址

我可以做一个 reducer side join 以便输出文件具有以下格式吗:

客户编号 |姓名 |电话 |平均购买价格 |总购买数

如果有的话,有什么例子可以看吗?

最佳答案

我会建议,

创建两个自定义类型。 CustomerKeyPurchaseSummary

1)CustomerKey:有customerID、姓名和电话号码。这应该实现 WritableComparable

  • 实现 public int compareTo,使其使用 customerID 进行比较。
  • 重写 toString 方法。

2)PurchaseSummary:具有 avgPurchasePrice 和 totalPurchases。你可以实现Writable

  • 重写 toString 方法

我假设数字 totalPurchases 是每个客户的条目数的总和。

  • 在映射器中读取文本并创建您的 CustomerKey 实例。该值应该与您现在所做的相同
  • 在 reducer 中创建一个 PurchaseSummary 实例并相应地填充它的值。

关于hadoop 减少上下文和另一个输入文件的侧连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20157943/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com