我希望在特定条件满足时更新到列。
例如:
我们将首先加载数据
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列不存在)。
我们非常感谢您的帮助。
答案 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
的值false
或age
进行更新。这是一种非常标准的方法。在FOREACH
循环中获取的新模式/别名可以具有比原始别名更多(或更少)的列数。