java.io.IOException : Hadoop 바이너리에서 실행 가능한 null \ bin \ winutils.exe를 찾을 수 없습니다. Windows 7에서 Eclipse 스파크


92

설치된 (Maven Spark 프로젝트) spark에서 간단한 작업 을 실행할 수 없습니다 Scala IDE.Windows 7

Spark 핵심 종속성이 추가되었습니다.

val conf = new SparkConf().setAppName("DemoDF").setMaster("local")
val sc = new SparkContext(conf)
val logData = sc.textFile("File.txt")
logData.count()

오류:

16/02/26 18:29:33 INFO SparkContext: Created broadcast 0 from textFile at FrameDemo.scala:13
16/02/26 18:29:34 ERROR Shell: Failed to locate the winutils binary in the hadoop binary path
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
    at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:278)
    at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:300)
    at org.apache.hadoop.util.Shell.<clinit>(Shell.java:293)
    at org.apache.hadoop.util.StringUtils.<clinit>(StringUtils.java:76)
    at org.apache.hadoop.mapred.FileInputFormat.setInputPaths(FileInputFormat.java:362)
    at <br>org.apache.spark.SparkContext$$anonfun$hadoopFile$1$$anonfun$33.apply(SparkContext.scala:1015)
    at org.apache.spark.SparkContext$$anonfun$hadoopFile$1$$anonfun$33.apply(SparkContext.scala:1015)
    at <br>org.apache.spark.rdd.HadoopRDD$$anonfun$getJobConf$6.apply(HadoopRDD.scala:176)
    at <br>org.apache.spark.rdd.HadoopRDD$$anonfun$getJobConf$6.apply(HadoopRDD.scala:176)<br>
    at scala.Option.map(Option.scala:145)<br>
    at org.apache.spark.rdd.HadoopRDD.getJobConf(HadoopRDD.scala:176)<br>
    at org.apache.spark.rdd.HadoopRDD.getPartitions(HadoopRDD.scala:195)<br>
    at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:239)<br>
    at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:237)<br>
    at scala.Option.getOrElse(Option.scala:120)<br>
    at org.apache.spark.rdd.RDD.partitions(RDD.scala:237)<br>
    at org.apache.spark.rdd.MapPartitionsRDD.getPartitions(MapPartitionsRDD.scala:35)<br>
    at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:239)<br>
    at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:237)<br>
    at scala.Option.getOrElse(Option.scala:120)<br>
    at org.apache.spark.rdd.RDD.partitions(RDD.scala:237)<br>
    at org.apache.spark.SparkContext.runJob(SparkContext.scala:1929)<br>
    at org.apache.spark.rdd.RDD.count(RDD.scala:1143)<br>
    at com.org.SparkDF.FrameDemo$.main(FrameDemo.scala:14)<br>
    at com.org.SparkDF.FrameDemo.main(FrameDemo.scala)<br>

답변:


141

다음 은 솔루션 문제에 대한 좋은 설명입니다.

  1. http://public-repo-1.hortonworks.com/hdp-win-alpha/winutils.exe 에서 winutils.exe를 다운로드합니다 .
  2. OS 수준에서 또는 프로그래밍 방식으로 HADOOP_HOME 환경 변수를 설정합니다.

    System.setProperty ( "hadoop.home.dir", "winutils가있는 폴더의 전체 경로");

  3. 즐겨


14
HADOOP_HOME을 bin 폴더 대신 hadoop 폴더로 설정해야합니다.
Stanley

4
또한 스파크가 컴파일 된 hadoop 버전에 따라 올바른 winutils.exe를 다운로드해야합니다 (따라서 위의 링크 일 필요는 없음). 그렇지 않으면 고통이 기다립니다 :)
NP3

System.setProperty ( "hadoop.home.dir", "C : \\ hadoop-2.7.1 \\")
Shyam Gupta

1
예 @Stanley가 말한대로 정확히. HADOOP_HOME을 bin 폴더 대신 hadoop 폴더로 설정하는 작업을 수행했습니다.
Jazz

@ NP3와 그 버전을 어떻게 알 수 있습니까? 최신 pyspark를 사용하고 있습니다. 감사합니다.
JDPeckham

66
  1. winutils.exe 다운로드
  2. 폴더 만들기, 말 C:\winutils\bin
  3. winutils.exe내부 복사C:\winutils\bin
  4. 환경 변수 HADOOP_HOME를 다음으로 설정C:\winutils

또한 cmd 행이 열려있는 경우 변수가 적용되도록 다시 시작하십시오.
eych

26

이것을 따르십시오 :

  1. bin임의의 디렉토리에 폴더를 만듭니다 (3 단계에서 사용).

  2. winutils.exe를 다운로드 하여 bin 디렉터리에 저장합니다.

  3. 이제 System.setProperty("hadoop.home.dir", "PATH/TO/THE/DIR");코드를 추가 하십시오.


2
고마워, 내가 찾고 있던 그냥 뭐
user373201

3
가리키는 경로는 'bin'디렉토리를 포함하지 않아야합니다. 예 : winutils.exe가 "D : //Hadoop//bin//winutils.exe"인 경우 hadoop.home.dir의 경로는 "D : // Hadoop"이어야합니다
Keshav Pradeep Ramanath

4

아래 문제를 보면

ERROR 셸 : hadoop 바이너리 경로에서 winutils 바이너리를 찾지 못했습니다.

java.io.IOException : Hadoop 바이너리에서 실행 가능한 null \ bin \ winutils.exe를 찾을 수 없습니다.

그런 다음 다음 단계를 수행하십시오.

  1. http://public-repo-1.hortonworks.com/hdp- win-alpha / winutils.exe에서 winutils.exe를 다운로드합니다 .
  2. 생성 한 폴더의 bin 폴더 아래에 보관합니다. 예 : C : \ Hadoop \ bin
  3. 프로그램에서 SparkContext 또는 SparkConf를 만들기 전에 다음 줄을 추가합니다. System.setProperty ( "hadoop.home.dir", "C : \ Hadoop");

4

Windows 10에서는 두 개의 다른 인수를 추가해야합니다.

(1) 새 변수와 값을 시스템 변수 아래에 HADOOP_HOME 및 경로 (예 : c : \ Hadoop)로 추가합니다.

(2) "경로"변수에 "C : \ Hadoop \ bin"으로 새 항목을 추가 / 추가합니다.

위의 내용은 저에게 효과적이었습니다.


4
1) Download winutils.exe from https://github.com/steveloughran/winutils 
2) Create a directory In windows "C:\winutils\bin
3) Copy the winutils.exe inside the above bib folder .
4) Set the environmental property in the code 
  System.setProperty("hadoop.home.dir", "file:///C:/winutils/");
5) Create a folder "file:///C:/temp" and give 777 permissions.
6) Add config property in spark Session ".config("spark.sql.warehouse.dir", "file:///C:/temp")"

2

단위 테스트를 실행하는 동안 동일한 문제가 발생했습니다. 이 해결 방법을 찾았습니다.

다음 해결 방법으로이 메시지를 제거 할 수 있습니다.

    File workaround = new File(".");
    System.getProperties().put("hadoop.home.dir", workaround.getAbsolutePath());
    new File("./bin").mkdirs();
    new File("./bin/winutils.exe").createNewFile();

출처 : https://issues.cloudera.org/browse/DISTRO-544



1

시스템 속성에서 Hadoop_Home 환경 변수를 설정하는 것이 작동하지 않았습니다. 그러나 이것은 :

  • Eclipse 실행 구성 환경 탭에서 Hadoop_Home을 설정하십시오.
  • 여기 에서 'Windows 환경 설정'을 따르십시오.

0

HADOOP_HOMEWindows에서에 대한 환경 변수를으로 언급하는 C:\winutils것 외에도 시스템의 관리자인지 확인해야합니다. 그렇지 않고 환경 변수를 추가하면 관리자 자격 증명을 묻는 메시지가 표시되는 경우 ( USER변수 에서도 ) 이러한 변수는 관리자 권한으로 명령 프롬프트를 시작하면 적용됩니다.


0

또한 Java 1.8.0_121, Spark spark-1.6.1-bin-hadoop2.6, Windows 10 및 Eclipse Oxygen과 유사한 문제에 직면했습니다. Eclipse에서 HADOOP_HOME을 시스템 변수로 사용하여 WordCount.java를 실행했을 때 이전 게시물에서 언급했듯이 작동하지 않았습니다.

System.setProperty ( "hadoop.home.dir", "PATH / TO / THE / DIR");

PATH / TO / THE / DIR / bin = winutils.exe Eclipse 내에서 Java 응용 프로그램으로 실행하거나 cmd에서 다음을 사용하여 spark-submit으로 실행하는지 여부

spark-submit --class groupid.artifactid.classname --master local [2] / maven을 사용하여 만든 jar 파일의 경로 / 데모 테스트 파일의 경로 / 출력 디렉토리 명령의 경로

예 : Spark / home / location / bin의 bin 위치로 이동하여 언급 한대로 spark-submit을 실행합니다.

D : \ BigData \ spark-2.3.0-bin-hadoop2.7 \ bin> spark-submit --class com.bigdata.abdus.sparkdemo.WordCount --master local [1] D : \ BigData \ spark-quickstart \ target \ spark-quickstart-0.0.1-SNAPSHOT.jar D : \ BigData \ spark-quickstart \ wordcount.txt


0

까다로운 문제입니다 ... 귀하의 보관 편지는 대문자 여야합니다. 예 : " C : \ ..."

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.