我是Spark的新手,下面的数据采用csv格式,我想以正确的格式进行转换。
没有头的CSV文件
Student_name=abc, student_grades=A, Student_gender=female
Student_name=Xyz, student_grades=B, Student_gender=male
现在我想通过创建标头将其放入rdd
Student_Name student_grades student_gender
abc A female
Xyz B male
我也想获得A,B和C成绩的学生列表
答案 0 :(得分:0)
您可以做的是从文件的第一行推断模式,然后相应地转换数据框,即:
这是您的方法。首先,让我们从文件中读取数据并显示它。
implementation 'com.google.android.gms:play-services-analytics:16.0.8'
然后,我们使用数据框的第一行提取默认名称和新名称之间的映射。
// the options are here to get rid of potential spaces around the ",".
val df = spark.read
.option("ignoreTrailingWhiteSpace", true)
.option("ignoreLeadingWhiteSpace", true)
.csv("path/your_file.csv")
df.show(false)
+----------------+----------------+---------------------+
|_c0 |_c1 |_c2 |
+----------------+----------------+---------------------+
|Student_name=abc|student_grades=A|Student_gender=female|
|Student_name=Xyz|student_grades=B|Student_gender=male |
+----------------+----------------+---------------------+
最后,我们在“ =”上用val row0 = df.head
val cols = df
.columns
.map(c => c -> row0.getAs[String](c).split("=").head )
删除列的名称,并使用映射重命名列:
split