如何在Pig中解析JSON?

Eri*_*bow 19 json apache-pig

我在s3中有很多gzip的日志文件,它有3种类型的日志行:b,c,i.我和c都是单级json:

{"this":"that","test":"4"}
Run Code Online (Sandbox Code Playgroud)

类型b是深度嵌套的json.我遇到了一个关于编译罐子来完成这项工作的要点.由于我的java技能不是很好,我真的不知道该怎么做.

{"this":{"foo":"bar","baz":{"test":"me"},"total":"5"}}
Run Code Online (Sandbox Code Playgroud)

由于类型i和c并不总是以相同的顺序,这使得指定生成正则表达式中的所有内容变得困难.使用Pig可以处理JSON(在gzip文件中)吗?我正在使用任何版本的Pig来自Amazon Elastic Map Reduce实例.

这归结为两个问题:1)我可以用猪解析JSON(如果是的话,如何)?2)如果我可以解析JSON(来自gzip的日志文件),我可以解析嵌套的JSON对象吗?

小智 16

Pig 0.10附带内置JsonStorage和JsonLoader().

猪doc为json加载/存储


Eri*_*bow 8

经过大量的解决方法和事情的处理后,我能够回答这个问题.我在博客上写了一篇关于如何做到这一点的文章.它可以在这里找到:http://eric.lubow.org/2011/hadoop/pig-queries-parsing-json-on-amazons-elastic-map-reduce-using-s3-data/

  • 链接上的"建立数据库连接时出错" (2认同)

Era*_*mpf 5

Pig附带一个JSON加载器.加载你使用:

A =
LOAD'data.json ' 使用PigJsonLoader();

要存储您可以使用:

STORE INTO ‘output.json’ 
    USING PigJsonLoader();
Run Code Online (Sandbox Code Playgroud)

但是,我不确定它是否支持GZIPed数据....

  • 哪个/什么版本?0.8.0默认情况下似乎不知道它. (4认同)
  • PigJsonLoader似乎是一个单独的包?https://github.com/mmay/PigJsonLoader (2认同)