首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MapReduce中读取整个文件

在MapReduce中读取整个文件
EN

Stack Overflow用户
提问于 2017-05-10 19:08:41
回答 1查看 517关注 0票数 0

我的项目是获取大量关于饮食习惯的数据,并使用MapReduce (我计划使用两种不同的MapReduces)来找出五大类食物与特定感觉相关的原因。示例输入文件如下:

代码语言:javascript
复制
food parsnips  2017/1/24 7:00
food beef  2017/1/24 9:00
food oats  2017/1/24 12:00
feel sleepy  2017/1/24 16:00
food pineapple  2017/1/24 17:00
food squid  2017/1/25 7:00
feel sleepy  2017/1/25 11:00
food blueberries  2017/1/25 12:00
food plums  2017/1/25 14:00
feel headache  2017/1/25 18:00
food broccoli  2017/1/25 19:00
food strawberries  2017/1/26 6:00
feel tired  2017/1/26 6:00
food oats  2017/1/26 7:00
food celery  2017/1/26 8:00
food lobster  2017/1/26 9:00
food wings  2017/1/26 9:00
feel stomachache  2017/1/26 14:00
food fish  2017/1/26 16:00
food rice  2017/1/27 6:00
food barley  2017/1/27 11:00
food wings  2017/1/27 17:00
feel itchy  2017/1/27 18:00
food mustard  2017/1/27 19:00
food icecream  2017/1/28 6:00
feel sleepy  2017/1/28 6:00
food oats  2017/1/28 10:00
feel stomachache  2017/1/28 10:00
food grapes  2017/1/28 13:00
food cheese  2017/1/28 14:00
food bread  2017/1/28 15:00
feel itchy  2017/1/28 17:00

一种给定的食物会在食物被吃掉后12小时内与一种感觉联系在一起。例如:在第一行中,作为一种与之相关的感觉,欧洲剪贴器会有一种“困倦”的感觉,因为这种睡眠感觉发生在吃完欧洲防风的9个小时之后。如果这种“困倦”发生在18:00,那么欧洲小片段就不会与睡意联系在一起。有许多类似于此的输入文件。

这是我对这个项目的计划:

  1. 第一个MapReduce将在文件中读取并创建(键,值)对,其中键是“食物,感觉”,而值只是“一”。换句话说,它会创造成对,关键就在任何时候,食物与一种感觉相关。然后,减少,就像一个单词数,把所有给定的“食物,感觉”的时间相加,所有的输入都会发生。
  2. 第二个MapReduce将以“食物感觉,和”作为它的(键,值)对。然后,它将映射每一种感觉与所有的食物,导致它的‘感觉,食物’,x倍(关键价值)。然后,它会将一种感觉的前五种原因食物减少为产出,从而产生以下输出:

Feeling1: food1,x事件

Feeling1: food2,x事件

我的问题是我不知道如何设置第一个MapReduce函数。我已经阅读了很多关于MapReduce的文献,并熟悉了常见的MaxTemp和WordCount示例,但我的问题是,我不知道如何使用12小时窗口并使用输入文件来创建“美食感觉,1”键值对。任何建议都是有用的。我知道这与map函数有关,它将整个文件文本作为一个值,而不仅仅是单个行的值。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2017-05-15 06:59:45

直接的方法是实现您自己的InputFormat,您可以从这里获得一个示例。

另一方面,实现一个单独的MapReduce程序来预处理整个数据.例如,将您想要的行数放到映射器中,应该在一行中处理,例如,假设您想通过一个映射程序处理这5行,然后执行以下操作

代码语言:javascript
复制
food parsnips  2017/1/24 7:00
food beef  2017/1/24 9:00
food oats  2017/1/24 12:00
feel sleepy  2017/1/24 16:00
food pineapple  2017/1/24 17:00

与此类似:

代码语言:javascript
复制
food parsnips  2017/1/24 7:00 | food beef  2017/1/24 9:00 | food oats 2017/1/24 12:00 | feel sleepy  2017/1/24 16:00 | food pineapple  2017/1/24 17:00

在此之后,映射器将分离出行并处理它们。

第二种方法效率很低。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43900873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档