ОШИБКА 2997: Обнаружено исключение ввода-вывода. Директория part1 не существует
У меня проблема с выполнением скрипта в Apache Pig. У меня есть 3 файла, а именно movies.csv, ratings.csv, tags.csv. Сначала я хочу загрузить "movies.csv", затем загрузить "ratings.csv" и объединить обе таблицы. Но я сталкиваюсь с ошибкой при загрузке файлов. Код, данный мной, выглядит следующим образом:
register 'piggybank-0.15.0.jar'
DEFINE CSVLoader org.apache.pig.piggybank.storage.CSVLoader();
part1 = LOAD '/home/cloudera/ml-20m/movies' as (movieId: chararray, title: chararray, genre: chararray);
cat part1;
Когда я даю команду "кошка", я получаю сообщение об ошибке, так как
След Свинья
ERROR 2997: Encountered IOException. Directory part1 does not exist.
java.io.IOException: Directory part1 does not exist.
at org.apache.pig.tools.grunt.GruntParser.processCat(GruntParser.java:677)
at org.apache.pig.tools.pigscript.parser.PigScriptParser.parse(PigScriptParser.java:233)
at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:198)
at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:173)
at org.apache.pig.tools.grunt.Grunt.run(Grunt.java:69)
at org.apache.pig.Main.run(Main.java:547)
at org.apache.pig.Main.main(Main.java:158)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
Но у меня есть файл в указанном месте. Я не знаю, почему свинья не может распознать входной файл. Я попытался, поместив входной файл в hdfs и загрузив файл. Но ошибка такая же, хотя. Кто-нибудь может мне помочь, пожалуйста. Заранее спасибо.
1 ответ
part1 - это не файл, а отношение. Когда вы используете команду LOAD в Pig, вы указываете загрузить содержимое файла в отношение. Вы не можете использовать cat в отношении, так как наиболее распространенное использование cat - это чтение содержимое файлов. Для отображения содержимого part1 используйте
DUMP part1;
иначе, если вы настаиваете на использовании cat, укажите полный путь к файлу
cat /home/cloudera/ml-20m/movies;