我想编写一个Mapreduce程序,从HDFS中选择一个文件并在电子邮件中发送相同的附件。
你能帮我解释一下代码的结构吗?由于它不像典型的文件处理,我应该有Mapper和reducer吗?
理想情况下,我想使用Oozie SMTP Action,但它不支持电子邮件中的附件。
答案 0 :(得分:0)
我不熟悉问题的Oozie SMTP Action部分,但我可以回答有关电子邮件的问题。
MapReduce的主要范例之一是您可以从MapReduce中的普通Java程序实现任何算法。普通Java文件和MapReduce之间的差异正在Hadoop上运行,因此您需要始终从mapper和reducer中发出键值对。
因此你可以做任何你想做的事!只要您从mapper和reducer中发出一个键值对,就可以发送电子邮件,将其放入数据库中,无论您想要什么。
听起来你有一个大型数据文件,你想要发送大量的电子邮件。因此,您可能希望使用仅限Map的作业。由于您所做的只是查找电子邮件并发送电子邮件,因此看起来似乎不是在reducer中进行分析或分组,因此您可能只能执行地图作业。
答案 1 :(得分:0)
在这种情况下,对于Mapper,整个内容长度为Longwritable类型,被视为Key。对于Mapper,整个电子邮件内容为Text Type,Value为Value。 将Key和Values上面的内容写入上下文可以解决您的问题。 Mapper的数量= 1 减速器数量= 0 它适合你......!