Я хочу сохранить список вложенных json в кадре данных spark, а также хотел обработать этот столбец. Существует также необходимость в таких операциях, как обновление какого-либо значения или удаление.
{
"studentName": "abc",
"mailId": "abc@gmail.com",
"class" : 7,
"scoreBoard" : [
{"subject":"Math","score":90,"grade":"A"},
{"subject":"Science","score":82,"grade":"A"},
{"subject":"History","score":80,"grade":"A"},
{"subject":"Hindi","score":75,"grade":"B"},
{"subject":"English","score":80,"grade":"A"},
{"subject":"Geography","score":80,"grade":"A"},
]
}
Попытка обработать поле ScoreBoard из приведенных выше данных, найти пять лучших предметов, удалить строку с наименьшим количеством баллов, а также изменить оценку некоторых subject.
case class Student(subject: String, score: Long, grade : String)
var studentTest = sc.read.json("**/testStudent.json")
val studentSchema = ArrayType(new StructType().add("subject", StringType).add("score", LongType).add("grade", StringType))
val parseStudentUDF = udf((scoreBoard : Seq[Row]) => {
//do data processing and return updated data
ListBuffer(Subtable(subject,score,grade), , ,)
}, subtableSchema)
studentTest = studentTest.withColumn("scoreBoard",parseStudentUDF(col("scoreBoard")))
Я не уверен, как преобразовать seq [Row] в DataFrame в UDF или как обработать seq для сортировки dara и удаления любой строки. Есть какой-либо способ сделать это? Любой другой подход также приемлем.