मैं स्पार्क के लिए नया हूं, और मैं स्पार्क 2.4.0 के साथ स्कैला 2.12.8 का उपयोग कर रहा हूं। मैं स्पार्क एमएलएलआईबी में रैंडम फॉरेस्ट क्लासिफायरियर का उपयोग करने की कोशिश कर रहा हूं। मैं क्लासिफायरियर का निर्माण और प्रशिक्षण कर सकता हूं, और क्लासिफायर भविष्यवाणी कर सकता है कि क्या मैं परिणामी RDD पर पहले () फ़ंक्शन का उपयोग करता हूं। हालांकि, अगर मैं टेक (एन) फ़ंक्शन का उपयोग करने का प्रयास करता हूं, तो मुझे एक बहुत बड़ा, बदसूरत स्टैक ट्रेस मिलता है। क्या किसी को पता है कि मैं क्या गलत कर रहा हूँ? त्रुटि पंक्ति में हो रही है: ".टेक(3)"। मुझे पता है कि यह पहला प्रभावी ऑपरेशन है जिसे मैं आरडीडी पर कर रहा हूं, इसलिए अगर कोई मुझे समझा सकता है कि यह क्यों विफल हो रहा है और इसे कैसे ठीक किया जाए, तो मैं वास्तव में आभारी रहूंगा।

object ItsABreeze {
  def main(args: Array[String]): Unit = {
    val spark: SparkSession = SparkSession
      .builder()
      .appName("test")
      .getOrCreate()

    //Do stuff to file
    val data: RDD[LabeledPoint] = MLUtils.loadLibSVMFile(spark.sparkContext, "file.svm")

    // Split the data into training and test sets (30% held out for testing)
    val splits: Array[RDD[LabeledPoint]] = data.randomSplit(Array(0.7, 0.3))
    val (trainingData, testData) = (splits(0), splits(1))

    // Train a RandomForest model.
    // Empty categoricalFeaturesInfo indicates all features are continuous
    val numClasses = 4
    val categoricaFeaturesInfo = Map[Int, Int]()
    val numTrees = 3
    val featureSubsetStrategy = "auto"
    val impurity = "gini"
    val maxDepth = 5
    val maxBins = 32

    val model: RandomForestModel = RandomForest.trainClassifier(
      trainingData,
      numClasses,
      categoricaFeaturesInfo,
      numTrees,
      featureSubsetStrategy,
      impurity,
      maxDepth,
      maxBins
    )

    testData
      .map((point: LabeledPoint) => model.predict(point.features))
      .take(3)
      .foreach(println)

    spark.stop()
  }
}

स्टैक ट्रेस का शीर्ष भाग इस प्रकार है:

java.io.IOException: unexpected exception type
    at java.io.ObjectStreamClass.throwMiscException(ObjectStreamClass.java:1736)
    at java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1266)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2078)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573)
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2287)
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2211)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2069)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573)
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2287)
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2211)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2069)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573)
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2287)
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2211)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2069)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:431)
    at org.apache.spark.serializer.JavaDeserializationStream.readObject(JavaSerializer.scala:75)
    at org.apache.spark.serializer.JavaSerializerInstance.deserialize(JavaSerializer.scala:114)
    at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:83)
    at org.apache.spark.scheduler.Task.run(Task.scala:121)
    at org.apache.spark.executor.Executor$TaskRunner$$anonfun$10.apply(Executor.scala:402)
    at org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1360)
    at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:408)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at java.lang.invoke.SerializedLambda.readResolve(SerializedLambda.java:230)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1260)
    ... 25 more
Caused by: java.lang.BootstrapMethodError: java.lang.NoClassDefFoundError: scala/runtime/LambdaDeserialize
    at ItsABreeze$.$deserializeLambda$(ItsABreeze.scala)
    ... 35 more
Caused by: java.lang.NoClassDefFoundError: scala/runtime/LambdaDeserialize
    ... 36 more
Caused by: java.lang.ClassNotFoundException: scala.runtime.LambdaDeserialize
    at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
0
The_Mad_Geometer 26 फरवरी 2019, 23:49

1 उत्तर

सबसे बढ़िया उत्तर

मैं जिस कोड को चलाने का प्रयास कर रहा था, वह वर्गीकरण उदाहरण इस पृष्ठ पर (स्पार्क मशीन लर्निंग लाइब्रेरी दस्तावेज़ से)।

मेरे मूल प्रश्न पर दोनों टिप्पणीकार सही थे: मैंने स्काला के संस्करण को बदल दिया जिसका मैं 2.12.8 से 2.11.12 तक उपयोग कर रहा था, और मैंने स्पार्क को 2.2.1 पर वापस कर दिया, और कोड वैसे ही चला जैसे वह था।

इस मुद्दे को देखने वाले किसी भी व्यक्ति के लिए जो उत्तर देने के योग्य है, यहां एक अनुवर्ती प्रश्न है: स्पार्क 2.4.0 दावा करता है कि स्कैला 2.12.x के लिए नया, प्रयोगात्मक समर्थन है। क्या 2.12.x समर्थन के साथ बहुत सी ज्ञात समस्याएं हैं?

1
The_Mad_Geometer 7 मार्च 2019, 23:41