Похоже, я что-то упустил.Количество редукторов в моих данных создает такое количество файлов в HDFS, но мои данные не разбиваются на несколько файлов.Что я заметил, так это то, что если я выполняю group by
для ключа, который находится в последовательном порядке, он работает нормально, например, данные ниже красиво разбиваются на два файла на основе ключа:
1 hello
2 bla
1 hi
2 works
2 end
Но эти данныене разделяется:
1 hello
3 bla
1 hi
3 works
3 end
Код, который я использовал и который отлично работает для одного, а не для другого -
InputData = LOAD 'above_data.txt';
GroupReq = GROUP InputData BY $0 PARALLEL 2;
FinalOutput = FOREACH GroupReq GENERATE flatten(InputData);
STORE FinalOutput INTO 'output/GroupReq' USING PigStorage ();
Приведенный выше код создает два файла выходных деталей, но сначалавведите его, чтобы разделить данные и вставьте ключ 1
в part-r-00000
и ключ 2
в part-r-00001
.Но для второго ввода он создает два файла детали, но все данные заканчиваются на part-r-00000
.Что мне не хватает, что я могу сделать, чтобы заставить данные разбиваться на несколько выходных файлов на основе уникальных ключей?
Примечание: для второго ввода, если я использую PARALLEL 3
(3 редуктора)), он создает три файла деталей и добавляет все данные для ключа 1
в part-0
и все данные для ключа 3
в part-3
файле.Я нашел это поведение странным.Кстати я использую Cloudera CDH3B4.