मैं स्पार्क एमएल एल्गोरिदम को एक ऐसे वातावरण के साथ चलाने की कोशिश कर रहा हूं जिसमें हडोप बिल्कुल नहीं है।

मुझे ट्यूटोरियल और अन्य पोस्ट से पता नहीं चला कि यह संभव है या नहीं:
क्या मैं Hadoop और किसी HDFS के किसी भी संस्करण का उपयोग किए बिना स्पार्क चला सकता हूं? या स्पार्क करने के लिए मुझे 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
Guy Yafe 10 अगस्त 2017, 15:24

2 जवाब

क्या मैं Hadoop के किसी भी संस्करण का उपयोग किए बिना स्पार्क चला सकता हूं?

तुम नहीं कर सकते। जबकि स्पार्क को Hadoop क्लस्टर (YARN, HDFS) की आवश्यकता नहीं है, यह Hadoop पुस्तकालयों पर निर्भर करता है। यदि आपके पास Hadoop इंस्टॉलेशन नहीं है जो ये प्रदान करता है, तो कृपया Apache Hadoop के लिए पूर्व-निर्मित के रूप में पूर्ण बिल्ड डिस्क्रिप्शन का उपयोग करें। आपके मामले में:

spark-2.2.0-bin-hadoop2.7
2
Alper t. Turker 10 अगस्त 2017, 15:30

यदि आपने अपाचे स्पार्क को प्रीबिल्ड पैकेज प्रकार के साथ डाउनलोड किया है, तो आपके पास सभी पुस्तकालयों की आवश्यकता है। अपनी समस्या को हल करने के लिए आपको winutils - हडूप के लिए एक विंडोज़ लाइब्रेरी स्थापित करने की आवश्यकता है।

बस सभी फाइलों को folder से कॉपी करें आपके फोल्डर में

%SPARK_HOME%\bin

और %SPARK_HOME% मान के साथ पर्यावरण चर %HADOOP_HOME% जोड़ें

1
addmeaning 10 अगस्त 2017, 16:32