2015-04-21 69 views
0

我想在特定條件滿足時更新列。更新2 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
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柱將與truefalse基於的age的值進行更新。這是做這件事的一個非常標準的方式。在FOREACH循環中獲得的新架構/別名可以具有比原始別名更多(或更少)的列數。