У меня есть два стола, к которым я хочу присоединиться.
table1 имеет столбцы я бы и значение.
table2 имеет столбцы я бы и цвет.
final = join table1 by id, table2 by id;
dump final;
Я получил таблицу, столбцы которой - я бы, значение, я бы, цвет. Но я хочу получить таблицу с такими столбцами, как я бы, значение и цвет. Как я могу удалить этот повторяющийся столбец идентификатора из этой таблицы?





Если вы выполните DESCRIBE final;, вы увидите, что схема выглядит примерно так:
final: {table1::id: chararray,table1::value: chararray,table2::id: chararray,table2::color: chararray}
Чтобы различать два столбца идентификатора, вы можете использовать table1::id или table2::id. Итак, чтобы удалить один из повторяющихся столбцов, вы можете:
A = FOREACH final GENERATE
table1::id AS id,
table1::value AS value,
table2::color AS color;
(Я также переименовал поля, чтобы избавиться от префиксов table1:: и table2::, поскольку они больше не нужны.)
Я мог бы также сделать:
A = FOREACH final GENERATE
table1::id AS id,
value AS value,
color AS color;
Это не привело бы к ошибке, поскольку имена value и color однозначны.
Выполните ваш последний скрипт PIG:
grunt> table1 = LOAD 'table1_input_path' USING PigStorage(',') as (id:int, value:int);
grunt> table2= LOAD 'table2_input_path' USING PigStorage(',') as (id:int, color:chararray);
grunt> joinlevel = JOIN table1 BY id, table2 BY id;
grunt> final = FOREACH joinlevel generate table1::id as id, table1::color as color, table2::value as value;
grunt> dump final;