在PIG中更新2列

时间:2015-04-21 05:41:20

标签: apache-pig

我希望在特定条件满足时更新到列。

例如:

我们将首先加载数据

A = load 'students.txt' as (name:chararray, age:int, gpa:float);

现在,

B = foreach A generate name, (age==18?1:age) as age, gpa;

每当我在同一时刻满足我的年龄条件时,我想再更新一列,说is_adult并将其值设置为true并动态创建此列(正如您在原始模式中观察到的那样,is_adult列不存在)。

我们非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

A = LOAD 'students.txt' AS (name:chararray, age:int, gpa:float);
B = FOREACH A GENERATE
    name,
    (age==18?1:age) AS age,
    (age>=18?'true':'false') AS adult,
    gpa ;

adult列将根据true的值falseage进行更新。这是一种非常标准的方法。在FOREACH循环中获取的新模式/别名可以具有比原始别名更多(或更少)的列数。