解析mapreduce中的.json文件

时间:2015-06-03 16:41:54

标签: java json hadoop

我是hadoop上json的新手,我有大量的.json类型的日志文件。我需要在mapreduce中解析这些日志。我需要mapreduce作业的例子,它接受.json文件的输入解析它并将其输出到文本文件或.json文件。

[  
    {  
        "name":"John",
        "city":"Berlin",
        "cars":[  
            "audi",
            "bmw"
        ],
        "job":"Teacher"
    },
    {  
        "name":"Mark",
        "city":"Oslo",
        "cars":[  
            "VW",
            "Toyata"
        ],
        "job":"Doctor"
    }
]

例如,上面的json应该在mapreduce中解析,以便为我提供具有键的输出:name和in values中所有附加的名称

2 个答案:

答案 0 :(得分:0)

Google GSON的JsonReader可能就是您所需要的。不完全确定你要用json数据做什么,但你应该能够从JSONReader文件中传输JSON并相应地处理它

https://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/com/google/gson/stream/JsonReader.html

答案 1 :(得分:0)

要将任何数据读入程序,您需要实现 InputFormat 无论是JSON XML还是Avro阅读器,实现都应该超越以下方法

公共摘要

 RecordReader<K,V> createRecordReader(InputSplit split,
                                         TaskAttemptContext context
                                        ) throws IOException, 
                                                 InterruptedException;

如果您正在寻找现有的实施方案,只需谷歌或点击此处custom inputformat for reading json in hadoop

您可以参考此来源了解实施细节http://grepcode.com/file/repo1.maven.org/maven2/org.kitesdk/kite-data-core/0.18.0/org/kitesdk/data/spi/filesystem/JSONInputFormat.java

输出格式与此无关。您可以根据需要为reducer选择输入和输出类型。只有当您想要生成JSON文件时,您需要一个JSONOutputFormat(FileOutputFormat的实现)