我有以下简单的Pig剧本,
AA = LOAD 'A' USING PigStorage(',') as (f1,f2,f3);
BB = LOAD 'B' AS (f1);
C = foreach AA generate f1;
C = JOIN AA BY f1 LEFT OUTER, BB BY f1 using 'replicated';
D = FOREACH C GENERATE FLATTEN((IsEmpty(AA) ? null : AA));
store D into 'd';
但是当我跑的时候,它给了我一个错误:
无效的标量投影:aa:需要从关系投影列才能将其用作标量
你能帮忙吗?
最好的,莎拉
1条答案
按热度按时间mfuanj7w1#
根据isempty文件:
,,检查行李或Map是否为空”
在您的例子中,它不起作用,因为c只是一个外部包,包含一个元组/行,其中包含来自aa和bb的字段:
您可以对aa中的每个字段应用bincond运算符来检查和替换值,例如:
但如果你坚持isempty,那么以下几点就可以了:
注:
我想在isempty部分的pig文档中可能有一个输入错误。在前面的示例中,cogroup用于连接两个关系,这将创建一个内部包,isempty可以对其进行操作。后来这被left join所取代,它导致了与您描述的相同的问题。