Учитывая ваш запрос на перенос столбцов в строки, одна проблема, с которой вы можете столкнуться, заключается в том, что ваши значения должны быть в строке, а не в Int. сначала вам нужно привести все ваши значения в строку. Предполагая, что часть сделана здесь, вы можете использовать trnapose и использовать struct, чтобы получить то, что вы хотите
Ниже приведена реализация Scala
Import org.apache.spark.sql.funtions._
def transpose(transDF:DataFrame) :DataFrame ={
cols1= transDF.dtypes.unzip
cols2= cols1._1
val KVS = explode(
array(cols2.map(c =>struct(lit(c).alias("column_name"), col(c).alias("column_Value"))
):_*))
transDF.Select(kvs.alias("_kvs"))
}
Вы можете вызвать функцию из своей основной, это вернет транспонированные столбцы. Тогда вы можете просто использовать groupBy и Agg, чтобы получить данные в нужном вам формате.