我正在用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文件中有多个换行符。是否有针对这种操作量身定制的输入格式?请给我一些指导。谢谢!
最佳答案
您可以在Java中使用WholeFileReader:
https://github.com/tomwhite/hadoop-book/blob/master/ch07/src/main/java/WholeFileInputFormat.java。
关键是它为isSplitable返回false
关于python - 具有许多json文件作为输入的Amazon EMR作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24911972/