首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Pig拉丁语中加载包含JSON字段的TSV?

如何在Pig拉丁语中加载包含JSON字段的TSV?
EN

Stack Overflow用户
提问于 2013-08-08 05:05:02
回答 2查看 1.6K关注 0票数 4

我正在尝试加载一个模式主要是TSV (制表符分隔值)的文件,但其中一个字段是JSON值。似乎pig拉丁语有TextLoader表示制表符(或其他)分隔值,而JsonLoader表示JSON……

特别是,每一行数据看起来像这样:

代码语言:javascript
运行
复制
date\tevent_name\tevent_details\n

其中event_details是一个JSON格式的字符串。其他的是简单的char数组。

加载此数据的最简单方法是什么?

注意:我使用的是Pig版本0.11.1。

EN

回答 2

Stack Overflow用户

发布于 2013-08-17 03:04:23

(在做了大量研究之后,下面是答案:)

http://mvnrepository.com/下载register命令所需的库。

pig脚本将如下所示:

代码语言:javascript
运行
复制
register 'libs/elephant-bird-core-4.1.jar';
register 'libs/elephant-bird-pig-4.1.jar';
register 'libs/guava-14.0.1.jar';
register 'libs/json-simple-1.1.1.jar';
register 'libs/piggybank.jar';

define decode_json com.twitter.elephantbird.pig.piggybank.JsonStringToMap();

e1 = load '$filename' using PigStorage() as (
    date: chararray,
    event_name: chararray,
    event_details_str: chararray,
);

-- Remove the header row:
e2 = filter e1 by not date matches '.*DATE';

-- Convert the event_details from a JSON string to a map:
events = foreach e2 generate *, decode_json(event_details_str) as event_details;
票数 10
EN

Stack Overflow用户

发布于 2014-05-21 22:30:38

mbells运行得很好,我一直在为如何检索map值而苦苦挣扎。下面是一个从事件映射中检索key1、key2的示例。

代码语言:javascript
运行
复制
fields = FOREACH events GENERATE events#'key1', events#'key2';
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18113813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档