Мне нужно сделать неравноправное соединение в Pig. Первое, что я хочу попробовать, это CROSS + фильтр:
together = CROSS A, B;
filtered = FILTER together BY (JOIN PREDICATE);
Однако одно из отношений определенно достаточно мало, чтобы поместиться в памяти. Это заставляет меня задаться вопросом, как CROSS на самом деле реализован в Pig. Может ли он сделать «реплицированный» КРЕСТ?
Если нет, я мог бы сделать что-то вроде этого:
small = FOREACH small GENERATE *, 1 AS key:int;
large = FOREACH large GENERATE *, 1 AS key:int;
together = JOIN large BY key, small BY key USING 'replicated';
filtered = FILTER together BY (JOIN PREDICATE);
Увидит ли второй подход какой-либо прирост производительности?