0

请帮忙,我有以下示例数据:

-21.33,45.677,1234,1245,1267,1290,1212,1111,10000,1902
-21.34,45.677,1264,1645,1266,1260,1612,1611,16000,1602
-21.35,45.677,1244,1445,1467,1240,1242,1211,11000,1912
-21.36,45.677,1231,1215,1217,1210,1212,1111,10010,1902

我希望我的 hadoop mapreduce 代码应将前两个浮点条目视为键(-21.33,45.677),将剩余的整数条目视为值(1234,1245,1267,1290,1212,1111,10000,1902)。

我不确定是否可以使用现有的 FileInputFormats 来完成。那么我应该如何处理这个知道该值应该用作数组而不是文本。

另外我应该如何更改 inputSplit 以便我能够在地图中同时获取多个记录以进行计算。

4

3 回答 3

1

最简单的方法是使用 TextInputFormat 并让您的映射器在键和值之间进行拆分。映射器的输出键和值都可以是文本。

于 2012-07-28T14:11:29.270 回答
0

为什么你不能只使用 TextInputFormat 的<LongWritable, Text>输入类型,并相应地执行提取和转换?

如果这真的不可接受,那么考虑使用ChainMapper - 使用一个映射进行提取,然后将这些结果传递给另一个期望所需键/值的映射器。

于 2012-07-27T22:04:20.173 回答
0

最简单的方法是使用分隔符将记录拆分为“,”。然后在您的映射器中,只需获取前两个值并将它们附加到密钥中。您必须使用文本,因为您需要一个与您的键相对应的值。需要进行一些计算才能将密钥转换回数值。

于 2013-12-03T06:54:14.733 回答