Присоединение свиньи Hadoop с временным диапазоном

У меня есть два набора данных

Master.txt
ID,StartTime
1,2013-04-01 00:01:37
2,2013-04-01 00:01:37

Transaction.txt
ID,SurveyDate,Attr1
1,2013-04-01 00:03:40,Success
2,2013-05-01 00:01:30,Success

Я хочу объединить эти два набора данных с ID и (SurveyDate-StartTime ‹24 часа) и добавить Attr1 в Master.

Я загрузил Master и Transaction с помощью Load in pig, и я могу присоединиться по идентификатору, но я не могу найти транзакции, которые находятся в течение 24 часов с Master.StartTime.

Master.txt имеет значительное количество записей, в которых транзакций очень мало.

вот код

master=load 'hdfs://localhost:9000/user/xyz/contact/master' using PigStorage(',') as (ID,StartTime) 

transaction=load 'hdfs://localhost:9000/user/xyz/contact/transaction' using PigStorage(',') as 
(ID,SurveyDate,Attr1)

combine=join master by ID left outer, transaction ID

Это пока что у меня есть, как я понимаю из документации, условия не допускаются при объединении наборов данных. Поэтому не знаю, как мне добавить что-то вроде Master.StartTime-Transaction.SurveyDate ‹= 24hrs


person user3056186    schedule 02.12.2013    source источник
comment
Пожалуйста, покажите ваши текущие усилия в коде.   -  person Konrad Kokosa    schedule 03.12.2013
comment
Отредактируйте свой пост вместо того, чтобы размещать в комментариях   -  person Donald Miner    schedule 03.12.2013
comment
Я отредактировал сообщение в соответствии с просьбой   -  person user3056186    schedule 03.12.2013


Ответы (1)


Вы должны просто иметь возможность добавить этап фильтра после соединения:

combine = join master by ID left outer, transaction ID
combine = FILTER combine BY ((StartTime - SurveyDate) < (24*60*60*1000));

(при условии, что ваше время начала и время опроса длинные, представляющие миллисекунды с эпохи)

person Chris White    schedule 03.12.2013
comment
Крис, я также хотел сохранить все записи из master и добавить атрибуты из транзакции в master.ID, где ((StartTime - SurveyDate) ‹(24 * 60 * 60 * 1000)) - person user3056186; 03.12.2013
comment
атрибуты должны быть частью объединения, но если у вас есть несколько атрибутов (несколько записей с одним и тем же ключом (ID, SurveyDate)), вам нужно будет проверить, получаете ли вы декартово произведение, а затем выполнить группу по ID / даты для создания набора атрибутов - person Chris White; 03.12.2013