설치된 (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>
답변
다음 은 솔루션 문제에 대한 좋은 설명입니다.
- http://public-repo-1.hortonworks.com/hdp-win-alpha/winutils.exe 에서 winutils.exe를 다운로드합니다 .
-
OS 수준에서 또는 프로그래밍 방식으로 HADOOP_HOME 환경 변수를 설정합니다.
System.setProperty ( “hadoop.home.dir”, “winutils가있는 폴더의 전체 경로”);
-
즐겨
답변
- winutils.exe 다운로드
- 폴더 만들기, 말
C:\winutils\bin
winutils.exe
내부 복사C:\winutils\bin
- 환경 변수
HADOOP_HOME
를 다음으로 설정C:\winutils
답변
이것을 따르십시오 :
-
bin
임의의 디렉토리에 폴더를 만듭니다 (3 단계에서 사용). -
winutils.exe를 다운로드 하여 bin 디렉터리에 저장합니다.
-
이제
System.setProperty("hadoop.home.dir", "PATH/TO/THE/DIR");
코드를 추가 하십시오.
답변
아래 문제를 보면
ERROR 셸 : hadoop 바이너리 경로에서 winutils 바이너리를 찾지 못했습니다.
java.io.IOException : Hadoop 바이너리에서 실행 가능한 null \ bin \ winutils.exe를 찾을 수 없습니다.
그런 다음 다음 단계를 수행하십시오.
- http://public-repo-1.hortonworks.com/hdp-
win-alpha / winutils.exe에서 winutils.exe를 다운로드합니다 . - 생성 한 폴더의 bin 폴더 아래에 보관합니다. 예 : C : \ Hadoop \ bin
- 프로그램에서 SparkContext 또는 SparkConf를 만들기 전에 다음 줄을 추가합니다. System.setProperty ( “hadoop.home.dir”, “C : \ Hadoop”);
답변
Windows 10에서는 두 개의 다른 인수를 추가해야합니다.
(1) 새 변수와 값을 시스템 변수 아래에 HADOOP_HOME 및 경로 (예 : c : \ Hadoop)로 추가합니다.
(2) “경로”변수에 “C : \ Hadoop \ bin”으로 새 항목을 추가 / 추가합니다.
위의 내용은 저에게 효과적이었습니다.
답변
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")"
답변
단위 테스트를 실행하는 동안 동일한 문제가 발생했습니다. 이 해결 방법을 찾았습니다.
다음 해결 방법으로이 메시지를 제거 할 수 있습니다.
File workaround = new File(".");
System.getProperties().put("hadoop.home.dir", workaround.getAbsolutePath());
new File("./bin").mkdirs();
new File("./bin/winutils.exe").createNewFile();