Нужно вычислить CTR (количество кликов по количеству показов, на уровне страны), я перечисляю структуру таблицы (таблицу показа и таблицу кликов) и мой код в Hadoop Pig. Мой вопрос заключается в том, является ли ниже внедрение наиболее эффективным, более эффективным решением? Благодарю.расчет стоимости кликов в Hadoop Pig
стол впечатление:
impressionID, метка времени, CountryId
нажмите стол:
impressionID, метка времени
joined_feed = join impression by impressionID, click by impression ID;
joined_feed = foreach joined_feed generate impression::countryID, click::impressionID is null? 0 : 1 as clicked;
ctr_result = foreach (group joined_feed by country) generate group as countryID, SUM(clicked)/COUNT(joined_feed)
Для такого кода вы должны получить CTR равным 1. Насколько я понимаю, вы должны были присоединиться сюда. Кроме того, было бы здорово иметь страну в таблице кликов. Затем вы можете группировать клики и показы отдельно и присоединяться по countryID, что намного быстрее. – zuku
На каждой стадии отображения/уменьшения соединения последняя таблица в последовательности передается через редукторы, где остальные буферизуются. Таким образом, это помогает уменьшить объем памяти, необходимый в редукторе, для буферизации строк для определенного значения ключа соединения путем организации таблиц таким образом, чтобы наибольшие таблицы отображались последними в последовательности – Havnar
@zuku, хорошая уловка. Для левого соединения, я думаю, чтобы убедиться, что показы без клика также могут иметь запись в конечном результате для вычисления CTR, правильно? –