我想在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中获取垃圾值。如果我读错了或者存储不正确,不知道吗?
答案 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)