一个关于pig中json处理的快速问题。
我尝试了一个名为elephant bird的jsonloader来加载和处理json数据,如下所示:
{
"SV":1,
"AD":[
{
"ID":"46931606",
"C1":"46",
"C2":"469",
"ST":"46931",
"PO":1
},
{
"ID":"46721489",
"C1":"46",
"C2":"467",
"ST":"46721",
"PO":5
}
]
}
加载器对于简单字段工作得很好,但是对于任何数组字段都不工作。我不知道如何使用这个自定义项或以任何其他方式访问数组中的元素(上面的“ad”字段)?请告知。
3条答案
按热度按时间1aaf6o9v1#
您应该像这样使用-nestedload参数:
然后使用以下代码:
然后你的json数组变成一个包数据类型。你可以把它展平得到元组。
此时,您将获得模式所属的元组数据类型(id:bytearray,c)
xoefb8l82#
我认为数组部分会作为一个包返回给象鸟jsonloader。
我不知道这是否是正确的方法,但一个解决办法可能是平坦的广告-缺点是你现在将有多行对应的数组广告中的每个元素。
pjngdqdw3#
正如其他人所评论的,在加载过程中,数组变成了一个需要展平的包。为了使其自我包含,下面是整个脚本的一个示例: