Spark 1.6 - Не удалось найти двоичный файл winutils в двоичном пути hadoop
Я знаю, что этот пост очень похож на этот (не удалось найти двоичный файл winutils в двоичном пути hadoop), однако я пробовал каждый предложенный шаг, и по-прежнему появляется та же ошибка.
Я пытаюсь использовать Apache Spark версии 1.6.0 в Windows 7 для выполнения учебного руководства на этой странице http://spark.apache.org/docs/latest/streaming-programming-guide.html, в частности, используя этот код:
./bin/run-example streaming.JavaNetworkWordCount localhost 9999
Однако эта ошибка продолжает появляться: ![enter image description here]()
После прочтения этого сообщения не удалось найти двоичный файл winutils в двоичном пути hadoop
Я понял, что мне нужен файл winutils.exe, поэтому я скачал с ним двоичный файл hadoop 2.6.0, определив переменную среды с именем HADOOP_HOME:
with value C:\Users\GERAL\Desktop\hadoop-2.6.0\bin
и поместил его в путь следующим образом:% HADOOP_HOME%
Все же та же самая ошибка все еще появляется, когда я пытаюсь код. Кто-нибудь знает как это решить?
Ответы
Ответ 1
Если вы используете Spark в Windows с Hadoop, вам необходимо убедиться, что установка Windows hadoop установлена правильно. для запуска spark вам нужно иметь winutils.exe и winutils.dll в папке bin вашего домашнего каталога hadoop.
Я бы попросил вас попробовать это сначала:
1) Вы можете скачать файлы .dll и .exe из пакета по ссылке ниже.
https://codeload.github.com/sardetushar/hadooponwindows/zip/master
2) Скопируйте winutils.exe и winutils.dll из этой папки в вашу папку $ HADOOP_HOME/bin.
3) Установите HADOOP_HOME
либо в вашем spark-env.sh, либо по команде, и добавьте HADOOP_HOME/bin
в PATH
.
а затем попробуйте запустить.
Если вам нужна помощь в установке Hadoop, есть хорошая ссылка, вы можете попробовать ее.
http://toodey.com/2015/08/10/hadoop-installation-on-windows-without-cygwin-in-10-mints/
Но это может подождать. Вы можете попробовать первые несколько шагов.
Ответ 2
Загрузите файл bin здесь Hadoop Bin, затем System.setProperty("hadoop.home.dir", "Desktop\bin");
Ответ 3
вы можете попробовать установить переменную среды HADOOP_HOME:
C:\Users\GERAL\Desktop\hadoop-2.6.0
вместо
C:\Users\GERAL\Desktop\hadoop-2.6.0\bin
Ответ 4
Я тоже столкнулся с этой проблемой при попытке запустить искровую оболочку с моего ноутбука Windows. Я решил это, и это сработало для меня, надеюсь, что это поможет. Это была небольшая ошибка, которую я сделал - я сохранил исполняемый файл winutils как "winutils.exe", а не только winutils.
Итак, когда переменная решена, она разрешает winutils.exe.exe, которая нигде не существует в двоичных файлах Hadoop. Я удалил этот ".exe" и вызвал оболочку, она сработала. Я предлагаю вам взглянуть на имя, которое оно было сохранено.
Ответ 5
Следующая ошибка связана с отсутствием двоичного файла winutils в пути к классам при запуске приложения Spark. Winutils является частью экосистемы Hadoop и не входит в состав Spark. Фактическая функциональность вашего приложения может работать корректно даже после исключения. Но лучше иметь его на месте, чтобы избежать ненужных проблем. Чтобы избежать ошибки, загрузите winutils.exe
двоичный файл и добавьте его в путь к классам.
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.Function;
public class SparkTestApp{
public static void main(String[] args) {
System.setProperty("hadoop.home.dir", "ANY_DIRECTORY");
// Example
// winutils.exe is copied to C:\winutil\bin\
// System.setProperty("hadoop.home.dir", "C:\\winutil\\");
String logFile = "C:\\sample_log.log";
SparkConf conf = new SparkConf().setAppName("Simple Application").setMaster("local");
JavaSparkContext sc = new JavaSparkContext(conf);
JavaRDD logData = sc.textFile(logFile).cache();
long numAs = logData.filter(new Function<String, Boolean>() {
public Boolean call(String s) {
return s.contains("a");
}
}).count();
System.out.println("Lines with a: " + numAs);
}
}
Если winutils.exe
скопировано в C:\winutil\bin\
затем setProperty, как показано ниже
System.setProperty("hadoop.home.dir", "C:\\winutil\\");
Ответ 6
Установите JDK 1.8, загрузите Spark Binary с Apache Spark & Winutils из Git-репо
Установите путь к пользовательским переменным для JDK, двоичного файла Spark, Winutils
JAVA_HOME
C:\Program Files\Java\jdk1.8.0_73
HADOOP_HOME
C:\Hadoop
SPARK_HOME
C:\spark-2.3.1-bin-hadoop2.7
PATH
C:\Program Files\Java\jdk1.8.0_73\bin;%HADOOP_HOME%\bin;%SPARK_HOME%\bin;
Откройте командную строку и запустите spark-shell
Spark Shell