关于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”字段)?请给我建议。
发布于 2015-03-27 05:49:35
正如其他人评论的那样,在加载过程中,array变成了一个需要压平的袋子。为了使其自包含,下面是整个脚本的示例:
REGISTER elephant-bird-core-4.3.jar;
REGISTER elephant-bird-hadoop-compat-4.5.jar;
REGISTER elephant-bird-pig-4.5.jar;
DEFINE JsonLoader com.twitter.elephantbird.pig.load.JsonLoader('-nestedLoad=true');
records = LOAD '$DATA_PATH' USING JsonLoader() AS (data: map[]);
records = FOREACH records GENERATE
data#'SV' AS SV,
FLATTEN(data#'AD') AS AD;
records = FOREACH records GENERATE
SV,
AD#'ID' AS ID,
AD#'C1' AS C1,
AD#'C2' AS C2,
AD#'ST' AS ST,
AD#'PO' AS PO;https://stackoverflow.com/questions/9847058
复制相似问题