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