(Hortonworks Sandbox) Операция Pig Join дублирует столбцы первичного ключа

У меня есть два стола, к которым я хочу присоединиться. table1 имеет столбцы я бы и значение.
table2 имеет столбцы я бы и цвет.

final = join table1 by id, table2 by id;
dump final;

Я получил таблицу, столбцы которой - я бы, значение, я бы, цвет. Но я хочу получить таблицу с такими столбцами, как я бы, значение и цвет. Как я могу удалить этот повторяющийся столбец идентификатора из этой таблицы?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
115
2

Ответы 2

Если вы выполните 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;

Другие вопросы по теме