Попытка выяснить «групповое» сглаживание и что делает этот конкретный «сглаживающий» код. Я работал над приведенным ниже кодом, пытаясь понять, как преобразовать его в улей в течение нескольких дней, и я просто не понимаю. Обычно они используют 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;
};
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
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;
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
Это насколько я понял: