我正在用python编写一个hadoop流应用程序,在emr上运行。emr作业的输入是s3 bucket中的文件目录,每个文件都是包含单个json对象的json文件。我希望Map程序对每个json文件进行操作,一次一个,并生成(键、值)对,如下所示:
Map:
{'name':'foo','request':'bar'}->('name',{'request':'bar'})
减少:
('name',[{'request':'bar'},{'request':'baz'}])->{'name':'foo','request':['bar','baz']}
如果我想处理的所有json对象都写在一个文件中作为一行,那么这似乎是可行的,尽管事实并非如此;每个.json文件中都有多个换行符。有没有为这种操作量身定做的输入格式?请给我一些指导。谢谢!
1条答案
按热度按时间piah890a1#
您可以在java中使用wholefilereader:https://github.com/tomwhite/hadoop-book/blob/master/ch07/src/main/java/wholefileinputformat.java .
关键是它为issplitable返回false