java.io.IOException:Hadoopバイナリで実行可能なnull \ bin \ winutils.exeが見つかりませんでした。Windows 7でEclipseをスパーク


91

インストールされている(Maven sparkプロジェクト)sparkで簡単なジョブを実行できませんScala IDEWindows 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>

回答:


137

これは、ソリューションに関する問題の適切な説明です。

  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フォルダーに設定する必要があります。
スタンレー

4
また、sparkがコンパイルされたhadoopのバージョンに基づいて、正しいwinutils.exeをダウンロードしてください(したがって、必ずしも上記のリンクではありません)。そうでなければ、痛みが待っています:)
NP3

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

1
はい、@ Stanleyが言うとおりです。HADOOP_HOMEをbinフォルダーではなくhadoopフォルダーに設定する作業を行いました。
ジャズ

@ NP3とそのバージョンをどのようにして知っていますか?最新のpysparkを使用しています。おかげで、
JDPeckham

64
  1. winutils.exeをダウンロード
  2. フォルダを作成する、言う C:\winutils\bin
  3. winutils.exe内部をコピーC:\winutils\bin
  4. 環境変数HADOOP_HOMEC:\winutils

また、cmd行を開いている場合は、再起動して変数を有効にします。
eych

25

これに従ってください:

  1. bin任意のディレクトリにフォルダを作成します(手順3で使用)。

  2. winutils.exeをダウンロードして、binディレクトリに配置します。

  3. System.setProperty("hadoop.home.dir", "PATH/TO/THE/DIR");コードを追加します。


2
本当に

3
なお、指定するパスには「bin」ディレクトリを含めないでください。例:winutils.exeが "D://Hadoop//bin//winutils.exe"であるパスの場合、hadoop.home.dirのパスは "D:// Hadoop"である必要があります
Keshav Pradeep Ramanath

4

以下の問題が発生した場合

エラーシェル:hadoopバイナリパスでwinutilsバイナリを見つけることができませんでした

java.io.IOException:Hadoopバイナリで実行可能なnull \ bin \ winutils.exeが見つかりませんでした。

その後、次の手順を実行します

  1. http://public-repo-1.hortonworks.com/hdp-からwinutils.exeをダウンロードします
  2. 作成したフォルダーのbinフォルダーの下にこれを保持します。例:C:\ Hadoop \ bin
  3. プログラムで、SparkContextまたはSparkConfを作成する前に次の行を追加しますSystem.setProperty( "hadoop.home.dir"、 "C:\ Hadoop");

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")"

3

Windows 10では、2つの異なる引数を追加する必要があります。

(1)システム変数の下に-HADOOP_HOMEとパス(例:c:\ Hadoop)として新しい変数と値を追加します。

(2)「C:\ Hadoop \ bin」として「Path」変数に新しいエントリを追加/追加します。

上記は私のために働いた。


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の詳細についても、同様の問題に直面しました。システム変数としてHADOOP_HOMEを使用して、Eclipseで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のビンの場所に移動し、前述のように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.