Я работаю над проектом, который требует, чтобы я нашел среднее временное значение (например, час, день, месяц) для нескольких наборов данных, а затем выполняю вычисления для этих средних.Проблема, с которой я сталкиваюсь, заключается в том, что Apache Pig не будет группировать по времени и не сбрасывать значения DateTime.Я пробовал несколько решений, размещенных здесь, на переполнении стека и в других местах, но безрезультатно.Я также перечитал документацию и не могу найти решение.
Вот мой код на данный момент:
data = LOAD 'TestData' USING PigStorage(',');
t_data = foreach data generate (chararray)$0 as date, (double)$305 as w_top, (double)$306 as t_top, (double)$310 as w_mid, (double)$311 as t_mid, (double)$315 as w_bot, (double)$316 as t_bot, (double)$319 as pressure;
times = FOREACH t_data GENERATE ToDate(date,'YYYY-MM-ddThh:mm:ss.s') as (date), w_top, t_top, w_mid, t_mid, w_bot, t_bot, pressure;
grp_hourly = GROUP times by GetHour(date);
average = foreach grp_hourly generate flatten(group), times.date, AVG(times.w_top), AVG(times.t_top), AVG(times.w_mid), AVG(times.t_mid), AVG(times.w_bot), AVG(times.t_bot);
И несколько примеров строк из данных:
2011-01-06 15:00:00.0 ,0.07225,-11.36384,-0.045,-11.24599,0.036,-12.44104,1021.707
2011-01-06 15:00:00.1 ,0.09975,-11.34448,-0.0325,-11.26053,0.041,-12.45392,1021.694
2011-01-06 15:00:00.2 ,0.15375,-11.35576,-0.02975,-11.26536,0.01025,-12.44748,1021.407
2011-01-06 15:00:00.3 ,-0.00225,-11.42034,-0.03775,-11.28477,-0.013,-12.44429,1021.764
2011-01-06 15:00:00.4 ,0.01625,-11.33965,-0.0395,-11.27989,-0.0395,-12.42172,1021.484
Что я в настоящее время получаю как вывод:
Я получаю файл с одним средним значением каждой переменной, которую я подаю в APACHE Pig без даты и времени (скорее всего, среднее значение каждой переменной завесь набор данных).Они нужны мне каждый час и должны быть напечатаны с выводом.Любые советы будут оценены.Извините, если мой пост грязный, я не часто пишу в Stack Overflow.