Scala IDE
にインストールされたWindows 7
(Maven sparkプロジェクト)で簡単なspark
ジョブを実行できません
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>
ここ は、ソリューションに関する問題の適切な説明です。
OSレベルまたはプログラムでHADOOP_HOME環境変数を設定します。
System.setProperty( "hadoop.home.dir"、 "winutilsを含むフォルダーへのフルパス");
楽しい
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");
を追加します。
以下の問題が表示された場合
エラーシェル:hadoopバイナリパスでwinutilsバイナリを見つけられませんでした
Java.io.IOException:Hadoopバイナリで実行可能なnull\bin\winutils.exeが見つかりませんでした。
その後、次の手順を実行します
Windows 10では、2つの異なる引数を追加する必要があります。
(1)新しい変数と値を-HADOOP_HOMEおよびパス(つまり、c:\ Hadoop)としてシステム変数に追加します。
(2)「パス」変数に「C:\ Hadoop\bin」として新しいエントリを追加/追加します。
上記は私のために働いた。
システムプロパティでHadoop_Home環境変数を設定しても機能しませんでした。しかし、これは:
または、GITHubからwinutils.exe
をダウンロードすることもできます。
https://github.com/steveloughran/winutils/tree/master/hadoop-2.7.1/bin
hadoop-2.7.1
を必要なバージョンに置き換え、ファイルをD:\hadoop\bin
に配置します
マシンの環境変数設定へのアクセス権がない場合は、コードに次の行を追加するだけです。
System.setProperty("hadoop.home.dir", "D:\\hadoop");
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();
WindowsのHADOOP_HOME
の環境変数をC:\winutils
として言及することに加えて、マシンの管理者であることを確認する必要もあります。そうでない場合、環境変数を追加すると管理者資格情報の入力が求められます(USER
変数の下でも)。管理者としてコマンドプロンプトを起動すると、これらの変数が適用されます。
また、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
それはトリッキーなものです...ストレージ文字は大文字でなければなりません。たとえば、「C:\ ...」