我跟随This Stack Over Flow question,其中显示了如何计算猪的行数。
我发现的问题是,如果我在尝试计算过滤变量的行之前进行一些正则表达式过滤器匹配和其他操作,那么这个非常耗时。
这是我的代码
all_data = load '/logs/chat1.log' USING TextLoader() as line:chararray;
match_filter_1 = filter all_data by ( line matches 'some regex');
inputGroup = GROUP match_filter_1 ALL;
totalLine = foreach inputGroup generate COUNT (match_filter_1);
dump totalLine;
那么,有没有办法让结果更快?
答案 0 :(得分:0)
使用PARALLEL子句增加作业的并行性:
PARALLEL设置Pig生成的MapReduce作业的reduce任务数。默认值为1(一个reduce任务)。 PARALLEL仅影响reduce任务的数量。映射并行性由输入文件确定,每个HDFS块一个映射。 如果未指定PARALLEL,则仍然可以获得相同的地图并行度,但只能执行一个reduce任务。
A = LOAD 'myfile' AS (t, u, v);
B = GROUP A BY t PARALLEL 18;
希望这有助于!!! ...