我正在python中编写一个hadoop流应用程序以在EMR上运行。 EMR作业的输入是S3存储桶中的文件目录,每个存储桶都是包含单个json对象的json文件。我希望映射器对每个json文件进行操作,一次一个,并生成一个(key,value)对,如下所示:
地图:
{'name':'foo','request':'bar'} - > ('name',{'request':'bar'})
减少
('name',[{'request':'bar'},{'request':'baz'}]) - > {'name':'foo','request':['bar','baz']}
如果我想要处理的所有json对象都被写为文件中的单行,这似乎是可行的,尽管事实并非如此;每个.json文件中都有多个换行符。是否有针对此类操作量身定制的输入格式?请给我一些指导。谢谢!
答案 0 :(得分:0)
您可以在Java中使用WholeFileReader: https://github.com/tomwhite/hadoop-book/blob/master/ch07/src/main/java/WholeFileInputFormat.java。
关键是它为isSplitable
返回false