在 Pig 中解析 JSON 格式的字符串
Posted
技术标签:
【中文标题】在 Pig 中解析 JSON 格式的字符串【英文标题】:Parse a JSON-formatted string in Pig 【发布时间】:2012-03-29 01:16:07 【问题描述】:我正在使用 pig 分析从 Cassandra 加载的数据。我得到的一列是带有 JSON 格式的产品 ID 和产品信息的字符串:
行 | ... |项目 | ... 1 | ... | "["id":"1", "useless_info":"blah", "id":"2", "useless_info":"bleh"]" | ... 2 | ... | "["id":"3"]" | ... . | . | . | .
请注意,有些行将在字符串中包含其他内容,而其他行将只有 id。
无论如何,我需要做的是解析每个“items”字符串并生成id号:
行 |编号 | ... | 1 | 1 | ... | 1 | 2 | ... | 2 | 3 | ... | ETC
据我了解,目前还没有用于 Pig 的 JSON 解析器,只有加载和存储函数(如大象鸟)。是否可以使用 REGEX_EXTRACT 之类的东西来做我想做的事,还是我必须编写自己的 UDF(或者有更好、更漂亮、更聪明的方法)?
提前感谢您的所有帮助!
PS 我使用的是 Pig 0.93
【问题讨论】:
How do I parse JSON in Pig?的可能重复 是的,我看过那篇博文——他们正在使用elephantbird 加载 JSON 格式的数据。我的数据实际上都是字符串(并且已经加载到 Pig 中),只有一部分是类似 JSON 的格式(需要解析) 【参考方案1】:象鸟有JsonStringToMap,它解析一个JSON字符串并在Pig中输出一个Map。这与他们的 JsonLoader 不同,后者在加载文件时解析 JSON。
【讨论】:
感谢您指出这一点。尽管我们需要一些不同的东西,但基于 JsonStringToMap 编写 UDF 相对简单,尽管只有 java 的基本知识。以上是关于在 Pig 中解析 JSON 格式的字符串的主要内容,如果未能解决你的问题,请参考以下文章
如何在 SQL Server 中解析 json 格式的字符串