Свинья 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));
(при условии, что ваше время начала и время опроса являются длинными, представляя мс с начала эпохи)