Pig で DISTINCT が GROUP BY/FOREACH よりも高速である理由がわかりません。MapReduce フレームワークでも同じである必要がありますが、以下を参照してください。
http://pig.apache.org/docs/r0.10.0/perf.html#distinct
Pig wiki には、「リレーション内の列から一意の値を抽出するには、DISTINCT または GROUP BY/GENERATE を使用できます。DISTINCT が推奨される方法です。より高速で効率的です。」
なんで?さまざまな方法で実装されていますか?