Преобразование свиньи Apache в улей

Попытка выяснить «групповое» сглаживание и что делает этот конкретный «сглаживающий» код. Я работал над приведенным ниже кодом, пытаясь понять, как преобразовать его в улей в течение нескольких дней, и я просто не понимаю. Обычно они используют flatten для создания нескольких строк для двух или более столбцов, которые они хотят назвать одинаковыми в выходных данных. Но в этом случае я не уверен, что он делает, чтобы воспроизвести это в улье. Буду очень признателен за любую помощь, так как у меня не так много времени, чтобы работать над этим, в то время как я должен завершить и протестировать его в ближайшие пару недель. Спасибо.

Change_pop = GROUP IPChange_pop BY (acct_num,strategy_code);
Oldest_GLChange = FOREACH Change_pop {
OList = ORDER IPChange_pop BY process_date ASC, new_loc DESC;
Oldest = LIMIT OList 1;
GENERATE
FLATTEN(GLChange_pop) as (email,acct_num,acct_nm,cust_num,type,strategy_code,process_date,last_5,cmGroup,current_loc,new_loc,update_ts),
FLATTEN(group.strategy_code) as grp_strategy_code,
FLATTEN(Oldest.process_date) as early_process_date, FLATTEN(Oldest.new_loc) as early_new_loc;
};

Это насколько я понял:

Patricia Flickner 08.04.2019 22:54
code удалить таблицу, если она существует IPChange_pop; создать таблицу IPChange_pop as select a.email, a.acct_num, b.early_process_date, max(a.new_loc) as Early_new_loc из iptable a, (выбрать acct_num, Strategy_code, min(process_date) as Early_process_date из группы iptable by acct_num, Strategy_code) b где a.acct_num = b.acct_num и b.early_process_date = a.process_date сгруппировать по a.email, a.acct_num, b.early_process_date; code
Patricia Flickner 08.04.2019 22:55
code drop table if exists Oldest_GLChange; create table Oldest_GLChange as select a.email, a.acct_num, a.acct_nm, a.cust_id, a.type, a.strategy_code, a.process_date, a.cmGroup, a.current_loc, a.new_loc, b.early_process_date, b.early_new_loc a.cstone_last_updatetm from iptable a, IPChange_pop b where a.acct_num = b.acct_num and a.email = b.email;
Patricia Flickner 08.04.2019 22:55
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать 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
3
165
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Flatten используется для распаковки кортежей, пакетов и карт. Навскидку я припоминаю, что эквивалент Hive будет использовать функцию EXPLODE() вместе с LATERAL VIEW.

https://pig.apache.org/docs/latest/basic.html#flatten

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-explode

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