CTR(国別レベルでのクリック数に対するクリック数)、Iテーブル構造(インプレッションテーブルとクリックテーブル)、および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を計算できることを確認することが正しいと思いますか? –