Azure HDInsight в цепочке Mapreduce: входной путь не существует - PullRequest
0 голосов
/ 19 марта 2020

Так что моя функция сокращения карт работает нормально на моей локальной виртуальной машине, но на Azure это дает мне Input path not found ошибку. У меня есть два набора функций преобразователя и редуктора, вывод из первого редуктора поступает во временную папку, которая является входом для второго преобразователя.

    FileInputFormat.addInputPath(job, new Path(args[0]));

    FileSystem.get(conf).delete(new Path("file:///tmp/inter/"),true);
    FileOutputFormat.setOutputPath(job, new Path("file:///tmp/inter/"));
    boolean complete = job.waitForCompletion(true);

    Job job2 = Job.getInstance(conf, "Q4a");
    job2.setJarByClass(Q4a.class);
    job2.setMapperClass(TokenizerMapper2.class);
    job2.setCombinerClass(CountReducer2.class);
    job2.setReducerClass(CountReducer2.class);
    job2.setOutputKeyClass(Text.class);
    job2.setOutputValueClass(Text.class);

//    FileInputFormat.addInputPath(job2, new Path("file:///tmp/inter/part*"));
    FileInputFormat.addInputPath(job2, new Path("file:///tmp/inter/"));
    FileOutputFormat.setOutputPath(job2, new Path(args[1]));
    System.exit(job2.waitForCompletion(true) ? 0 : 1);

enter image description here

Первый полностью выполняется преобразователь и редуктор, а затем выдается ошибка. Строка 58 является последней строкой в ​​вставленном коде, но я считаю, что ошибка из-за временного пути ввода? Нужно ли ссылаться на временные файлы другим способом в Azure? Любая помощь очень ценится, спасибо.

1 Ответ

0 голосов
/ 20 марта 2020

Хорошо, я только что решил это. Похоже, HDInsight не поддерживает указанную мной структуру папок. Я изменил путь на «out» вместо «file: /// tmp / inter», и это сработало.

...