具有 2 个值的 MapReduce

MapReduce with 2 values

MapReduce 中是否可以有两个值?

我的 csv 看起来像这样:

month,  date,  deviceCategory, totalTransactionRevenue
201608 20160801  Desktop        1000
201608 20160801  Mobile         700

我想用MapReduce计算每种设备的平均月收入。我希望输出看起来像这样:

 (month, deskRev, mobileRev)

但是当我在 Mapper 中编写 context.write(month, DesktopoutPut, MobileoutPut); 代码时,它说不能应用于给定类型。是因为MapReduce必须在键值对中吗?

谢谢!!

嗯,根据您的需要,您可以将月份和设备类别串联起来。 因此,您可以将其用作键(这实际上形成了一个复合键)。 这个键和对应的值看起来像

<201608 桌面 , 1000>

<201608 手机 , 700>

除了一行连接两个字段外,您的程序绝对不需要更改。