猪拉丁文的Json数据阅读

时间:2014-02-27 03:19:49

标签: apache-pig

我想在PigLatin中读取Json中的嵌套数据

{"info":{"Id":53556,"State":"Ohio"},"time":139140}  
{"info":{"Id":3554,"State":"Calif"},"time":1391407471477}

我正在使用

read = load '$json_file' USING JsonLoader('Id : chararray, state : chararray, time : chararray');

并将读取数据存储到/tmp/data.csv using PigStorage (',', '-noschema');

但我在data.csv中获取垃圾值。如果我读错了或者存储不正确,不知道吗?

1 个答案:

答案 0 :(得分:0)

LOAD语句中的架构不正确。 info 名称 {&#34; Id&#34;:53556,&#34;州&#34;: &#34;俄亥俄州&#34;} 。此值是 对象 ,它又是一组无序的名称/值对,即&#34; Id&#34;:53556 和< EM>&#34;状态&#34;:&#34;俄亥俄州&#34;

试试这个

read = 
        LOAD 'test.dat' 
        USING JsonLoader('
                info:(
                        id       : CHARARRAY
                        , state  : CHARARRAY )
                , time : CHARARRAY
        ');

proj = 
        FOREACH read 
        GENERATE 
            FLATTEN(info) AS (
                    id
                    , state )
            , time
        ;

proj2 = 
        FOREACH proj 
        GENERATE 
                state
                , time
        ;

dump proj2;

输出

(Ohio,139140)
(Calif,1391407471477)