Любой более быстрый способ подсчета строк в Pig

Я следил за этим вопросом Stack Over Flow, где показано, как считать строки в файле pig.

Проблема, которую я обнаружил, заключается в том, что это занимает невероятно много времени, если я выполняю сопоставление фильтра регулярных выражений и другую операцию, прежде чем пытаться подсчитать строки отфильтрованной переменной.

Вот мой код

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;

Итак, есть ли способ получить результат быстрее?


person rubayet.R    schedule 28.09.2016    source источник
comment
каков размер ваших данных   -  person ℕʘʘḆḽḘ    schedule 28.09.2016
comment
прямо сейчас это демонстрационный размер данных, например, 2 ГБ.   -  person rubayet.R    schedule 29.09.2016


Ответы (1)


Используйте предложение PARALLEL, чтобы увеличить параллелизм задания:

PARALLEL устанавливает количество задач сокращения для заданий MapReduce, сгенерированных Pig. Значение по умолчанию — 1 (одна задача сокращения). PARALLEL влияет только на количество задач сокращения. Параллелизм карт определяется входным файлом, по одной карте для каждого блока HDFS. Если вы не укажете PARALLEL, вы все равно получите тот же параллелизм карты, но только одну задачу редукции.

A = LOAD 'myfile' AS (t, u, v);
B = GROUP A BY t PARALLEL 18;

Надеюсь, это поможет!!!...

person Bhavesh    schedule 10.10.2016
comment
в настоящее время моя работа свиньи отложена. поэтому я не могу попробовать это прямо сейчас, поэтому принимаю или отрицаю. но как только я возобновлю работу, я обязательно попробую это и надеюсь сделать положительный отзыв. - person rubayet.R; 02.11.2016