#hadoop #hdfs #mahout
#hadoop #hdfs #mahout
Вопрос:
Я пытаюсь запустить логистическую регрессию на Mahout с файлом, который находится в HDFS — имя файла ppeng.txt с помощью следующей командной строки.
mahout org.apache.mahout.classifier.sgd.TrainLogistic — проходит 5 — скорость 1 — лямбда 0,5 — ввод ppeng.txt —особенности 21 —выходной тест_mahout —целевой nbr_of_txns —категории 2 —предикторы lifetime_rev_usd_amt ntpv_12_mth_sent_usd_amt —типы n n
Этот файл находится в HDFS, но эта строка выдает ошибку с исключением File Not Found, если я не скопирую файл на свой локальный компьютер.
Моей переменной HADOOP_LOCAL также присвоено значение null. Ошибка, которую я получаю, заключается в следующем — у кого-нибудь есть опыт решения этой проблемы — если да, пожалуйста, помогите.
Exception in thread "main" java.io.FileNotFoundException: ppeng.txt (No such file or directory)**
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:120)
at org.apache.mahout.classifier.sgd.TrainLogistic.open(TrainLogistic.java:316)
at org.apache.mahout.classifier.sgd.TrainLogistic.mainToOutput(TrainLogistic.java:75)
at org.apache.mahout.classifier.sgd.TrainLogistic.main(TrainLogistic.java:64)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.util.ProgramDriver$ProgramDescription.invoke(ProgramDriver.java:68)
at org.apache.hadoop.util.ProgramDriver.driver(ProgramDriver.java:139)
at org.apache.mahout.driver.MahoutDriver.main(MahoutDriver.java:188)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.util.RunJar.main(RunJar.java:197)
Ответ №1:
Он обращается к вашей локальной файловой системе с помощью java.io.FileInputStream.open.
Можете ли вы запустить
hadoop fs -ls
откуда вы запускаете задание Mahout? Если это так, вам нужно сбросить MAHOUT_LOCAL и повторить попытку. Mahout использует настройки Hadoop на компьютере, с которого вы запускаете, чтобы определить, где находятся HDFS и трекеры заданий mapreduce.
Вот сообщение о переключении между клиентом, локальным псевдокластером и полным членством в кластере на одной машине. Он также установил правильный флаг для Mahout. Просто некоторые функции bash.
http://occamsmachete.com/ml/2012/07/02/how-to-switch-hadoop-confugurations/