我正在研究将学生数据转换为间隔的小型项目。该程序只是读取数据,并从标记列中选择标记(整数),将其按升序排序后转换为间隔。任何一个可以帮我这个特殊部分,与许多感谢:如何从Scala中的列读取行
代码:
import org.apache.spark.sql.functions._
import org.apache.spark.sql.Row
case class Rating(mark: Int, classes: String, schooles: String, name: String)
val Result = sc.textFile("hdfs://schools:9000/input/marks.csv").map(_.split(",")).map(p => Rating(p(0).toInt, p(1).trim, p(2).trim, p(3).trim)).toDF
val all_marks = Result.groupBy("classes", "schooles","name").agg(collect_list("mark") as "marks",count("*") as "cnt").where($"cnt" > 10)
val mrk=all_marks.select("marks")
我需要帮助的部分:
mrk.foreach(
var ascending=mrk.sort
var interval=ascending[0]+"-"+ascending[ascending.size]
)
我怎样才能读取的标记按行行,所以我可以对它们进行排序,并将它们转换为间隔。
非常感谢Shankar,但是如何将数据帧“val mrk = all_marks.select(”marks“)”转换为Seq和“val ddf1 = Seq(List(2,3,1),List(6,4, 3 ))。toDF(“marks”)“ –
你为什么要转换为列表?我认为这不是好主意 –
如果你真的想要mrk.rdd.map(r => r(0))。collect()这是你可以做的 –