为什么 A 和 B 的内部连接比 Pig 中的 A 或 B 产生更多的结果?

Why does inner join of A and B produce more results than either A or B in Pig?

我的理解是,inner join应该取同键的A和B的交集,所以交集的结果数永远不会超过A或B。但是,我运行 一个 pig 脚本,默认情况下应该执行内部连接,这表明交叉点中的结果多于 A 或 B。这可能是什么原因造成的?

OLD_count = FOREACH (GROUP OLD ALL) GENERATE COUNT(OLD);
NEW_count = FOREACH (GROUP NEW ALL) GENERATE COUNT(NEW);

G = JOIN NEW BY (X, Y), OLD by (X, Y);
JOIN_count = FOREACH (GROUP G ALL) GENERATE COUNT(G);

DUMP OLD_count;
DUMP NEW_count; 
DUMP JOIN_count;

-- Results (approximate):
-- (70000000)
-- (80000000)
-- (85000000) wtf? 

使用联接,每个组合都会得到一个结果,因此如果对给定对象进行多次联接,它将返回多次。

假设有 2 位老师和 3 位学生,每位老师教每位学生。有 5 (2 + 3) 个实体,但如果您按它们的关系加入这两个组,将会有 6 结果。