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

标签 python json hadoop amazon-s3 amazon-emr

我正在用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/

相关文章:

hadoop - pig + hbase + hadoop2 集成

python - 可以用python表示的最小数字是多少?

java - JAX-RS 在自动 POJO 映射之前处理异常

python - 在 Python/dateutil 中将两个时间跨度彼此相除

json - 从 postgreSQL 中的表查询 json 对象

java - 如何将 JSON 数组转换为 Java 列表。我在用斯文森

linux - 看不到 hdfs,Hadoop shell 命令 hadoop fs -ls 给出错误无法访问

hadoop - Avro mapreduce 作业失败 java.lang.IncompatibleClassChangeError

python - 断言错误 : negative sum of square deviations

python - 按工作日和时间更好地选择 Pandas DatetimeIndex