json - Map Reduce 以在 hadoop 2.2 中解析 JSON 数据

标签 json hadoop mapreduce

您好,我有一个如下格式的 JSON。我需要在 map 函数中解析它以获取所有记录的性别信息。

[
    {
        "SeasonTicket" : false, 
        "name" : "Vinson Foreman", 
        "gender" : "male", 
        "age" : 50, 
        "email" : "vinsonforeman@cyclonica.com", 
        "annualSalary" : "$98,501.00", 
        "id" : 0
    }, 
    {
        "SeasonTicket": true, 
        "name": "Genevieve Compton", 
        "gender": "female", 
        "age": 28, 
        "email": "genevievecompton@cyclonica.com", 
        "annualSalary": "$46,881.00", 
        "id": 1
    }, 
    {
        "SeasonTicket": false, 
        "name": "Christian Crawford", 
        "gender": "male", 
        "age": 53, 
        "email": "christiancrawford@cyclonica.com", 
        "annualSalary": "$53,488.00", 
        "id": 2
    }
]

我曾尝试使用 JSONparser,但无法通过 JSON 结构。有人建议我使用 JAQL 和 pig 但不能这样做。

任何帮助,将不胜感激。

最佳答案

我的理解是,您有一个包含 JSON 数组的巨大文件。其中,您需要向映射器读取相同的内容并发出 <id : gender> .挑战在于 JSON 涉及多行。

在这种情况下,我建议您将默认分隔符更改为“}”而不是“\n”。

在这种情况下,您将能够将部分 JSON 作为值放入 map 方法中。您可以丢弃 key ,即。字节偏移量并对值进行轻微的重构,例如删除不需要的 [ ] 或 ,并添加诸如“}”之类的字符,然后解析剩余的字符串。

此解决方案有效,因为在 JSON 中没有嵌套,并且 } 是根据给定示例的有效 JSON 结束分隔符。

要更改默认分隔符,只需设置属性 textinputformat.record.delimiter"}"
请查看this例子。

另请查看 this吉拉

关于json - Map Reduce 以在 hadoop 2.2 中解析 JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22852250/

相关文章:

javascript - 将json转为数组

java - 在java中读取json文件时出错

hadoop - hdfs中的两个文件比较

hadoop - 我们可以在 oozie 工作流 xml 中访问整个 hadoop 作业日志吗?

ruby - 用 map reduce 解决一个问题

java - Mapreduce 中的 HTTPS 请求

java - hibernate 实体到json

c# - 使用 JSON 而不是 XML 管理 Windows Azure 服务总线队列

hadoop - 如何将 pyspark 输出写入 impala 表?

javascript - 对内部文档 mongodb 进行排序的 mapreduce