输入:具有地图数据的.csv 文件
[banks#{(bofa),(chase)}]
猪脚本:
A = LOAD 'a.csv' AS (bank_details:map[]);
B = FOREACH A GENERATE FLATTEN(bank_details#'banks') AS bank_name;
输出:乙:
({(bofa),(chase)})
在袋子上涂上Flatten
C = FOREACH A GENERATE bank_details#'banks' AS banks: bag{t:(bank:chararray)};
D = FOREACH C GENERATE FLATTEN(banks);
输出:D:
org.apache.pig.backend.executionengine.ExecException: ERROR 0: Exception while executing [POProject (Name: Project[bag][0] - scope-114 Operator Key: scope-114) children: null at []]: java.lang.ClassCastException: org.apache.pig.data.DataByteArray cannot be cast to org.apache.pig.data.DataBag
at org.apache.pig.backend.hadoop.executionengine.physicalLayer.PhysicalOperator.getNext(PhysicalOperator.java:366)
预期输出:
(bofa)
(chase)
如果输入文件有如下包:
输入:a.csv
{(bofa),(chase)}
猪脚本:
A = LOAD 'a.csv' AS (bank_details:bag{t:(bank_name:chararray)});
B = FOREACH A GENERATE FLATTEN(bank_details) AS bank_name;
输出:B:生成扁平化结果
(bofa)
(chase)
关于为什么我们无法在别名 C 和 D 中压平袋子的任何输入。