Это просто измененный ответ @ terminally-chill в аналогичном посте тот же пост в вопросе.Если это выполняется в машине Windows, ниже должны быть разделители для разделения.Использовал этот пост в качестве ссылки разделитель в использовании Windows для ответа.
val rdd2 = rdd.flatMap {
case (file, data) =>
data.split("\r\n\r\n").map(strBlock => {
strBlock.split("\r\n")
})
}
// create DataFrame that contains an array
val df = rdd2.toDF
// convert array of items to columns
val finalDf = df.select((0 until 13).map(i => col("value")(i)): _*)
finalDf.show
Вывод:
+--------+--------+-----------+--------+--------+--------+--------+------------+--------+--------+---------+--------------------+---------+
|value[0]|value[1]| value[2]|value[3]|value[4]|value[5]|value[6]| value[7]|value[8]|value[9]|value[10]| value[11]|value[12]|
+--------+--------+-----------+--------+--------+--------+--------+------------+--------+--------+---------+--------------------+---------+
| No| Freq| Type| Angle| Power| P| PI| P Type| M Type| S Type| R Type| Time|File name|
| 1| 1000|Vis_typ_001| 45.5| 5| 100| 1000| PRI_7| M_15| S_2| R1|27/07/2018 10:12...| Ac13.avi|
| 2| 408.55|Vis_typ_002| 12| 0| 0| 0|JUNKKKKKKKKK| M_12| S_3| R5|27/07/2018 12:18...| 070.mp4|
+--------+--------+-----------+--------+--------+--------+--------+------------+--------+--------+---------+--------------------+---------+