を発生させながら文字列値を取得するにはどうすれば二つのファイルスパーク:出力ファイル
--------Student.csv---------
StudentId,City
101,NDLS
102,Mumbai
-------StudentDetails.csv---
StudentId,StudentName,Course
101,ABC,C001
102,XYZ,C002
要件第二のファイルにStudentNameとコースに置き換える必要があります最初に
StudentIdを持っています。
はかつて私は、コードが
val studentRDD = sc.textFile(file path); val studentdetailsRDD = sc.textFile(file path); val studentB = sc.broadcast(studentdetailsRDD.collect) //Generating CSV studentRDD.map{student => val name = getName(student.StudentId) val course = getCourse(student.StudentId) Array(name, course, student.City) }.mapPartitions{data => val stringWriter = new StringWriter(); val csvWriter =new CSVWriter(stringWriter); csvWriter.writeAll(data.toList) Iterator(stringWriter.toString()) }.saveAsTextFile(outputPath) //Functions defined to get details def getName(studentId : String) { studentB.value.map{stud =>if(studentId == stud.StudentId) stud.StudentName} } def getCourse(studentId : String) { studentB.value.map{stud =>if(studentId == stud.StudentId) stud.Course} }
問題
ファイルを取得する使用
ABC,C001,NDLS XYZ,C002,Mumbai
のような完全な詳細で新しいCSVを生成する必要が置き換え値はString値ではなくオブジェクト表現です。
オブジェクトではなく文字列値を取得するにはどうすればよいですか?
をよくお読みいただきありがとうございます。あなたの答えは私の疑問を解決した – Rahul