gpt4 book ai didi

PIG 中 Elephant-Bird UDF 中的 JSON 数组字段处理

转载 作者:可可西里 更新时间:2023-11-01 15:07:21 28 4
gpt4 key购买 nike

一个关于 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
}
]
}

加载器适用于简单字段,但不适用于任何数组字段。我不知道如何使用此 UDF 或以任何其他方式访问数组中的元素(上面的“AD”字段)?请指教。

最佳答案

你应该像这样使用 -nestedLoad 参数:

a = load 'input' using com.twitter.elephantbird.pig.load.JsonLoader('-nestedLoad') AS (json:map[]).

然后你使用下面的代码:

b = FOREACH a GENERATE (json#'AD') as AD:bag{t:Tuple(m:map[])};

然后你的 json 数组变成一个 bag 数据类型。您可以将其展平以获得元组。

c = FOREACH b GENERATE FLATTEN(AD);
d = FOREACH c GENERATE AD::m#ID AS ID, AD::m#C1 AS C1, AD::m#C2 AS C2, AD::m#ST AS ST, AD::m#PO AS PO

此时会得到schema为(ID:bytearray, C)的元组数据类型

关于PIG 中 Elephant-Bird UDF 中的 JSON 数组字段处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9847058/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com