Как обработать 2 файла с разными форматами ввода в Hadoop Streaming? - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть 2 файла в разных форматах.Один - SequenceFileInputFormat, другой - TextInputFormat.Я знаю, что для Hadoop Streaming есть возможность указать 2 входных файла, например:

hadoop jar hadoop-streaming-2.8.0.jar \
  -input '/user/foo/dir1' -input '/user/foo/dir2' \
    (rest of the command)

Но как указать также разные -inputformat для этих файлов?

Я обнаружил, что это возможносделать для Java с MultipleInputs как:

MultipleInputs.addInputPath(job, new Path(args[0]), <Input_Format_Class_1>);
MultipleInputs.addInputPath(job, new Path(args[1]), <Input_Format_Class_2>);

Могу ли я сделать что-то подобное с Hadoop Streaming?

1 Ответ

0 голосов
/ 01 марта 2019

Параметры потоковой передачи Hadoop содержит различные параметры потоковой передачи Hadoop, которые могут быть полезны в вашем случае:

-inputformat JavaClassName

По умолчанию используется TextInputFormat

Я проверил это, используя только TextInputFormat, но я считаю, что это должно быть похоже на

hadoop jar hadoop-streaming-2.8.0.jar \
  -input '/user/foo/dir1' -inputformat TextInputFormat \
  -input '/user/foo/dir2' -inputformat SequenceFileInputFormat \
    (rest of the command)

Вот что проверено, и это работает:

    hadoop jar /usr/lib/hadoop-mapreduce/hadoop-streaming-2.6.0*.jar \
      -file mapperB.py -mapper mapperB.py -file reducerB.py -reducer reducerB.py \
      -input /tempfiles/big.txt -inputformat TextInputFormat \
      -input /tempfiles/t.txt -inputformat TextInputFormat \
      -output /tempfiles/output-X

Примечание: file устарела,

...