Свинья 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 и Transaction, используя Load in pig, и я могу присоединиться к ID, но я не могу найти транзакции, которые находятся в течение 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 <=24 часа

1 ответ

Решение

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

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

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

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