mbe*_*lls 4 json apache-pig tsv
我正在尝试加载一个主要是TSV(制表符分隔值)的模式的文件,但其中一个字段是JSON值.猪拉丁似乎有TabL(或其他)分隔值的TextLoader,以及JSON的JsonLoader ...
特别是,每行数据看起来像:
date\tevent_name\tevent_details\n
Run Code Online (Sandbox Code Playgroud)
其中event_details是JSON格式的字符串.其他的只是char数组.
加载此数据的最简单方法是什么?
注意:我正在使用Pig ver 0.11.1.
mbe*_*lls 10
(经过一堆研究,这里是答案:)
从注册命令所需的http://mvnrepository.com/下载必要的库.
猪脚本如下:
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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1528 次 |
| 最近记录: |