Hadoop Pig默认JsonLoader架构问题

Hadoop Pig默认JsonLoader架构问题,hadoop,apache-pig,Hadoop,Apache Pig,我有以下需要使用Pig解析的数据 数据 { "Name": "BBQ Chicken", "Sizes": [ { "Size": "Large", "Price": 14.99 }, { "Size": "Medium", "Price": 12.99 } ], "Toppings": [ "Barbecue Sauce", "Chicken", "Cheese" ] } 我能够定义名称和大小的模式,但无法使顶部正常工作。这里需

我有以下需要使用Pig解析的数据

数据

{
    "Name": "BBQ Chicken",
    "Sizes": [
        { "Size": "Large", "Price": 14.99 },
        { "Size": "Medium", "Price": 12.99 }
    ],
    "Toppings": [ "Barbecue Sauce", "Chicken", "Cheese" ]
}
我能够定义
名称
大小
的模式,但无法使
顶部
正常工作。这里需要帮助

脚本

data = LOAD '/user/hue/data/nested_json_pizza_sample_data.json'
       USING JsonLoader('Name:chararray,
                         Sizes:bag{tuple(Size:chararray, Price:float)},
                         Toppings:tuple(a:chararray)');
DUMP data;
输出

data = LOAD '/user/hue/data/nested_json_pizza_sample_data.json'
       USING JsonLoader('Name:chararray,
                         Sizes:bag{tuple(Size:chararray, Price:float)},
                         Toppings:tuple(a:chararray)');
DUMP data;
正如您在下面看到的,顶部的数据没有被解析

(BBQ Chicken,{(Large,14.99),(Medium,12.99)},)
(Hawaiian,{(Large,12.99),(Medium,10.99)},)
(Vegetable,{(Large,12.99),(Medium,10.99)},)
(Pepperoni,{(Large,12.99),(Medium,10.99),(Small,7.49)},)
(Cheese,{(Large,10.99),(Medium,9.99),(Small,5.49)},)
data: {Name: chararray,Sizes: {(Size: chararray,Price: float)},Toppings: (a: chararray)}

这里有两个选项:如果数组中的项数未知

Toppings:{t:(i:chararray)}
或者如果元素的数量始终相同

Toppings: (i: chararray, j: chararray, k: chararray)
将为您提供以下输出:

(BBQ Chicken,{(Large,14.99),(Medium,12.99)},)

我尝试过浇头:{t:(I:chararray)}但输出结果与我在原始帖子中显示的相同。由于浇头是不固定的,我不能使用第二个选项,但我也尝试过,输出是相同的。这很奇怪,因为我在本地尝试过,我得到了我在回答中给出的输出。你能分享一下你使用的是哪一个版本的pig,并且你是从grunt运行它吗?你在使用Cloudera或Hortonworks的沙箱吗。我遇到的问题是关于Hortonworks sandbox 2.ApachePig版本0.12.0(r1529718)和Hadoop 1.2.1在伪dist模式下运行。