将数据转换为rdd并进行分析

时间:2019-05-07 07:10:53

标签: apache-spark pyspark apache-spark-sql rdd key-value

我是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成绩的学生列表

1 个答案:

答案 0 :(得分:0)

您可以做的是从文件的第一行推断模式,然后相应地转换数据框,即:

  1. 从行值中删除列名。
  2. 重命名列

这是您的方法。首先,让我们从文件中读取数据并显示它。

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