具有许多json文件的Amazon EMR作业作为输入

时间:2014-07-23 13:36:34

标签: python json hadoop amazon-s3 amazon-emr

我正在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文件中都有多个换行符。是否有针对此类操作量身定制的输入格式?请给我一些指导。谢谢!

1 个答案:

答案 0 :(得分:0)

您可以在Java中使用WholeFileReader: https://github.com/tomwhite/hadoop-book/blob/master/ch07/src/main/java/WholeFileInputFormat.java

关键是它为isSplitable

返回false