का जोड़ मुझे दो फाइलों में संग्रहीत दो मैट्रिक्स के अतिरिक्त की आवश्यकता है।दो आरडीडी [mllib.linalg.Vector] के
1 2 3 4 5 6 7 8 9
मैं इस प्रकार उन फ़ाइलों को पढ़ रहा हूँ:
scala> val rows = sc.textFile(“latest1.txt”).map { line => val values = line.split(‘ ‘).map(_.toDouble)
Vectors.sparse(values.length,values.zipWithIndex.map(e => (e._2, e._1)).filter(_._2 != 0.0))
}
scala> val r1 = rows
r1: org.apache.spark.rdd.RDD[org.apache.spark.mllib.linalg.Vector] = MappedRDD[2] at map at :14
scala> val rows = sc.textFile(“latest2.txt”).map { line => val values = line.split(‘ ‘).map(_.toDouble)
Vectors.sparse(values.length,values.zipWithIndex.map(e => (e._2, e._1)).filter(_._2 != 0.0))
}
scala> val r2 = rows
r2: org.apache.spark.rdd.RDD[org.apache.spark.mllib.linalg.Vector] = MappedRDD[2] at map at :14
मैं, आर 1 जोड़ने के लिए r2 चाहते
latest1.txt
और latest2.txt
की सामग्री के अगले str है। तो, अपाचे-स्पार्क में इन दो RDD[mllib.linalg.Vector]
एस जोड़ने का कोई तरीका है।
एक साथ दो RDDs ज़िप, फिर परिणामी RDD से अधिक नक्शा –
हाँ मैं कि वैल rdd3 = rdd1.zip (rdd2) स्केला> वैल rdd4 = rdd3.map {ई => e._1 + ई की तरह था। _2} और मुझे त्रुटि मिल रही है: 22: त्रुटि: मिस्चैच टाइप करें; मिला: org.apache.spark.mllib.linalg.Vector आवश्यक: स्ट्रिंग वैल आर 4 = r3.map {e => e._1 + e।_2} चूंकि mllib वैक्टर पर कोई + या ऑपरेशन नहीं है, अतिरिक्त ऑपरेशन को उपयोग पर परिभाषित किया गया है। वेक्टर – krishna
ऐसा लगता है कि + दो वेक्टर जोड़ने के लिए ऑपरेटर नहीं है, इसलिए आपको डिफ़ॉल्ट निहितार्थ मिल रहा है जो स्ट्रिंग में कनवर्ट करने का प्रयास करता है। –