/ / एक 2 डी सूची आरडीडी [वेक्टर] या जावाआरडीडी [वेक्टर] स्कैला में परिवर्तित करें - स्कैला, वेक्टर, प्रकार-रूपांतरण, rdd

एक 2 डी सूची को आरडीडी [वेक्टर] या जावाआरडीडी [वेक्टर] स्कैला में परिवर्तित करें - स्कैला, वेक्टर, टाइप-रूपांतरण, आरडीडी

मेरे पास पूर्णांक की 2 डी सूची है और मैं चाहूंगास्पार्क एमएलआईबीआईबी में एसवीएम मॉडल की भविष्यवाणी विधि का उपयोग करने के लिए इसे आरडीडी [वेक्टर] या जावाआरडीडी [वेक्टर] में परिवर्तित करें। मैंने इसे आरडीडी में बदलने के लिए निम्नलिखित की कोशिश की है। लेकिन ऐसा लगता है कि यह मेरी जरूरत नहीं है।

 val tuppleSlides = encoded.iterator.sliding(10).toList
val rdd = sc.parallelize(tuppleSlides)

किसी भी विचार को सही प्रकार में बदलने के लिए आदेश क्या है?

पहले ही, आपका बहुत धन्यवाद।

उत्तर:

उत्तर № 1 के लिए 1

यदि आप एमएलआईबीबी का उपयोग करना चाहते हैं तो आपको एक की आवश्यकता होगी RDD[LabeledPoint]। डेटा की अपनी 2 डी सूची और लेबल की कुछ सूची को देखते हुए, आप अपना बना सकते हैं RDD[LabeledPoint] जैसे:

scala> val labels = List(1.0, -1.0)
labels: List[Double] = List(1.0, -1.0)

scala> val myData = List(List(1d,2d), List(3d,4d))
myData: List[List[Double]] = List(List(1.0, 2.0), List(3.0, 4.0))

scala> import org.apache.spark.ml.linalg.Vectors
import org.apache.spark.ml.linalg.Vectors

scala> import org.apache.spark.ml.feature.LabeledPoint
import org.apache.spark.ml.feature.LabeledPoint

scala> val vectors = myData.map(x => Vectors.dense(x.toArray))
vectors: List[org.apache.spark.ml.linalg.Vector] = List([1.0,2.0], [3.0,4.0])

scala> val labPts = labels.zip(vectors).map{case (l, fV) => LabeledPoint(l, fV)}
labPts: List[org.apache.spark.ml.feature.LabeledPoint] = List((1.0,[1.0,2.0]), (-1.0,[3.0,4.0]))

scala> val myRDD = sc.parallelize(labPts)
myRDD: org.apache.spark.rdd.RDD[org.apache.spark.ml.feature.LabeledPoint] = ParallelCollectionRDD[0] at parallelize at <console>:34