Такой файл не существует при работе каналов Hadoop с использованием C++

При запуске программы уменьшения карты hadoop с использованием каналов hadoop файл, который присутствует в hdfs, не обнаруживается программой сокращения. Если программа выполняется без каналов hadoop, файл легко найти библиотекой libhdfs, но при запуске программы с

hadoop pipes -input i -ouput o -program p 

команда, файл не найден libhdfs и создается исключение java.io.exception. Пытался включить параметр -fs в команду, но результаты все те же. Я также включил hdfs://localhost:9000/ с файлами, но результатов все еще нет. Параметр файла находится внутри кода c как:

file="/path/to/file/in/hdfs" or "hdfs://localhost:9000/path/to/file"
hdfsFS fs = hdfsConnect("localhost", 9000);
hdfsFile input=hdfsOpenFile(fs,file,O_RDONLY,0,0,0);

1 ответ

Нашел проблему. Файлы в hdfs недоступны для узла задачи mapreduce. Поэтому вместо этого пришлось передавать файлы в распределенный кеш через тег архива, сжимая файлы в один файл tar. Этого также можно добиться, написав собственный класс формата ввода и предоставив файлы во входном параметре.

Другие вопросы по тегам