2013-09-21 3 views
0

Привет У меня есть несколько файлов журнала запросов в следующей форме:Вход Hadoop/MapReduce

q_string q_visits q_date 
0 red ballons 1790  2012-10-02 00:00:00 
1 blue socks 364   2012-10-02 00:00:00 
2 current  280   2012-10-02 00:00:00 
3 molecular 259   2012-10-02 00:00:00 
4 red table 201   2012-10-02 00:00:00 

У меня есть файл в день, за каждый месяц на протяжении года. То, что я хотел бы сделать, это:

(1) Группа файлов в месяц (или более конкретно группе все из q_strings, принадлежащих каждому месяцу)

(2) Так как же q_string может появиться на несколько дней , Я хотел бы сгруппировать те же самые q_strings в течение месяца, суммируя по q_visits по всем экземплярам этого q_string

(3) Нормализовать q_visits против сгруппированной q_string (делением суммы q_visits для сгруппированной q_string на сумма q_visits по всем q_строкам в течение месяца)

Ожидает, что выход будет иметь аналогичную схему для ввода, за исключением того, чтобы иметь дополнительный столбец с нормализованными ежемесячными томами q_visit.

Я делаю это в Python/Pandas, но теперь у вас больше данных и чувствую, что проблема облегчается для MapReduce.

Можно ли было легко реализовать в EMR/AWS? Концептуально, каков будет рабочий процесс MR для выполнения вышеуказанного? Я хотел бы сохранить кодирование в Python, поэтому, вероятно, будет использовать потоковое вещание.

Заранее благодарим за любую помощь.

ответ

2

Я бы предпочел использовать Pig. Легко учиться и писать, без длинных фрагментов кода. Просто выражайте свою обработку данных с точки зрения трансформации или потока данных и получите желаемый результат. Если это соответствует вашим потребностям, это намного лучше, чем необработанные задания MR. Свинья была разработана для этого рода вещей. Это определенно сэкономит много времени.

1

Для структурированных данных будет намного проще использовать PIG, а MAP уменьшить. Вы можете написать то же самое решение в PIG с минимальным количеством кодов и тем самым сократить время разработки.

Смежные вопросы