我想写一个Mapreduce程序,从HDFS中选择一个文件,并在电子邮件中向其发送附件。
你能帮我了解一下代码的结构吗?既然它不像典型的文件处理,我应该有一个Mapper和reducer吗?
理想情况下,我想使用Oozie SMTP操作,但它不支持电子邮件中的附件。
我不熟悉问题的Oozie SMTP操作部分,但我可以回答有关电子邮件的问题。
MapReduce的主要范例之一是,您可以在MapReduce中实现普通Java程序中的任何算法。普通Java文件和MapReduce之间的区别是在Hadoop上运行的,因此您需要始终从mapper和reducer发出一个键值对。
因此,你可以做任何你想做的事!发送一封电子邮件,将其放入数据库,无论你想要什么,只要你从映射器和reducer中发出一个键值对。
听起来你有一个很大的数据文件,里面有很多你想发送的电子邮件。因此,你可能想使用仅地图的工作。由于你所做的只是找到电子邮件并发送电子邮件,所以似乎不会在减速器中进行分析或分组,所以你可能可以只做地图工作。
在这种情况下,作为映射器的Longwritable类型的整个内容长度被视为Key。对于映射器,将整个电子邮件内容作为Text类型作为Value。将上面的键和值写入上下文可以解决您的问题。映射器数量=1减速器数量=0它对你有效。。。!