2017-08-10 5 views
0

Hadoopが含まれていない環境でSpark MLアルゴリズムを実行しようとしています。HadoopがインストールされていないSpark ML

これが可能かどうかは、チュートリアルやその他の投稿からわかりません:
HadoopとHDFSを使用しないでSparkを実行できますか?または、SparkにHadoopをインストールする必要がありますか?以下は

C:\spark-2.2.0-bin-without-hadoop\bin>spark-shell 
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/fs/FSDataInputStream 
     at org.apache.spark.deploy.SparkSubmitArguments$$anonfun$mergeDefaultSparkProperties$1.apply(SparkSubmitArguments.scala:124) 
     at org.apache.spark.deploy.SparkSubmitArguments$$anonfun$mergeDefaultSparkProperties$1.apply(SparkSubmitArguments.scala:124) 
     at scala.Option.getOrElse(Option.scala:121) 
     at org.apache.spark.deploy.SparkSubmitArguments.mergeDefaultSparkProperties(SparkSubmitArguments.scala:124) 
     at org.apache.spark.deploy.SparkSubmitArguments.<init>(SparkSubmitArguments.scala:110) 
     at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:112) 
     at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) 
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.fs.FSDataInputStream 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
     ... 7 more 

私のサンプルプログラムです:

次の例外が発生
package com.example.spark_example; 

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 Main { 


    public static void main(String[] args) { 
    String logFile = "C:\\spark-2.2.0-bin-without-hadoop\\README.md"; // Should be some file on your system 
    SparkConf conf = new SparkConf().setAppName("Simple Application"); 
    JavaSparkContext sc = new JavaSparkContext(conf); 
    JavaRDD<String> logData = sc.textFile(logFile).cache(); 

    long numAs = logData.filter((Function<String, Boolean>) s -> s.contains("a")).count(); 

    long numBs = logData.filter((Function<String, Boolean>) s -> s.contains("b")).count(); 

    System.out.println("Lines with a: " + numAs + ", lines with b: " + numBs); 

    sc.stop(); 
    } 

} 

17/08/10 15:23:35 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 
17/08/10 15:23:35 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. 

答えて

2

を私は次のメッセージを取得していますスパークシェルを実行すると

どのバージョンのHadを使用しなくてもSparkを実行できますかoop

できません。 SparkはHadoopクラスタ(YARN、HDFS)を必要としませんが、Hadoopライブラリに依存します。これらを提供するHadoopをインストールしていない場合は、Apache Hadoopのビルド済みの完全ビルドを使用してください。あなたの場合:

spark-2.2.0-bin-hadoop2.7 
0

prebuildパッケージタイプでApache Sparkをダウンロードした場合は、すべてのライブラリが必要です。 問題を解決するには、winutils(hadoop用のWindowsライブラリ)をインストールする必要があります。

はちょうどあなたのフォルダにfolder からすべてのファイルをコピー

%SPARK_HOME%\bin 

そして値%SPARK_HOMEの%で環境変数%HADOOP_HOMEの%を追加

関連する問題