在PIG中的JsonLoader中定义模式

时间:2016-04-01 02:32:38

标签: json hadoop schema apache-pig

我在尝试使用JsonLoader从JSON文件中使用Pig时输入数据集的模式。

数据格式如下:

{
  'cat_a':'some_text',
  'cat_b':{(attribute_name):(attribute_value)}
}

我试图将架构描述为:

LOAD 'filename' USING JsonLoader('cat_a:chararray, cat_b:(attribute_name:chararray,attribute_value:int)');

我觉得我在cat_b上错误地描述了架构。

有人可以提供帮助吗? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

如果您的json格式为

{"recipe":"Tacos","ingredients":[{"name":"Beef"},{"name":"Lettuce"},{"name":"Cheese"}]}

将上述json存储在test.json

运行以下命令

a = LOAD '/home/abhijit/Desktop/test.json' USING JsonLoader('recipe:chararray,ingredients: {(name:chararray)}');

dump a;

您将输出为

(Tacos,{(Beef),(Lettuce),(Cheese)},)

如果您的json格式低于格式

{"recipe":"Tacos","ingredients":[{"name":"Beef"},{"name":"Lettuce"},{"name":"Cheese"}],"inventor":{"name":"Alex","age":25}}

a = LOAD '/home/abhijit/Desktop/test.json' USING JsonLoader('recipe:chararray,ingredients: {(name:chararray)},inventor: (name:chararray, age:int)');


dump a;

输出

(Tacos,{(Beef),(Lettuce),(Cheese)},(Alex,25))