Please use Illustrate. It is one of the best ways to debug PIG scripts. Depending on the size of the data illustrate will provide friendly data representation. It works by taking a sample of the output data and runs it through the script. But as it encounters operators that remove data (such as filter, join, etc.) it makes sure that some records pass through the operator and some do not. When necessary it will manufacture records that look like yours (i.e. have the same schema) but are not in the data sample it took.
grunt> divs = load ‘NYSE_dividends’ as (e:chararray, s:chararray, d:chararray, div:float);
recent = filter divs by d > ’2009-01-01′;
trimmd = foreach recent generate s, div;
grpd = group trimmd by s;
avgdiv = foreach grpd generate group, AVG(trimmd.div);
Also use local mode: Running PIG scripts in local mode helps debugging issues. Please see the example below of how to run PIG client in local mode:
pig -x local -e ‘explain -script mypig.pig’