An amusing puzzle for you: the way I started assignment 4 was with the lines: input1 = LOAD 'file.dat' USING PigStorage() AS (f1:chararray, f2:chararray); input2 = FOREACH input1 GENERATE f2 AS f1, f1 AS f2; input3 = UNION input1, input2; input4 = FILTER input3 by f1<f2; Using input1-4 saves some computation time later, if one is clever.