Вы можете определить столбцы как строковый тип. Что касается того, как преобразовать массив целых чисел в строку:
val a = [1, 2, 3]
val b = a.map(x => x.toString).mkString(",")
b содержит значение, которое вы хотите записать.
Для части о том, как найти, какой тип данных содержит данный столбец Вы можете создать массив столбцов и соответствующий массив их типов данных.
val colName = df.columns
val colType = df.schema.fields.map(x=>x.dataType).map(x=>x.toString)
colType содержит тип данных, который содержит соответствующий столбец. Обратите внимание, что вам, возможно, придется написать простой парсер для проверки типов данных.
Вы также можете удалить map(x=>x.toString)
и затем проверить столбец i^{th}
, используя
colType(i).isInstanceOf[org.apache.spark.sql.types.ArrayType]
//returns true for arrays