Вы можете взорвать массив столбцов и выбрать как обычно
val df = spark.sparkContext.parallelize(Seq(
(Array("ABC"), Array("ABC"), "BILAL AHMAD", "ID-N", "1"),
(Array("ABC"), Array("ABC"), "JUNAID Ali", "ID-N", "1"),
(Array("ABC"), Array("ABC"), "BILAL ZAFAR", "ID-N", "1")
)).toDF("Column1", "COLUMN2", "NAME", "STATUS", "Sequence")
Разбить столбец типа массива или вы можете также выбрать только первый из массива здесь
val dfNew = df.schema.foldLeft(df) { (acc, schema) =>
schema.dataType.typeName match {
case "array" => acc.withColumn(schema.name, explode(col(schema.name)))
case _ => acc
}
}
dfNew.select("*").show(false)
Выход:
+-------+-------+-----------+------+--------+
|Column1|COLUMN2|NAME |STATUS|Sequence|
+-------+-------+-----------+------+--------+
|ABC |ABC |BILAL AHMAD|ID-N |1 |
|ABC |ABC |JUNAID Ali |ID-N |1 |
|ABC |ABC |BILAL ZAFAR|ID-N |1 |
+-------+-------+-----------+------+--------+