Вот оно. Измените форматирование в соответствии с вашими потребностями.
import org.apache.spark.sql.functions._
df.withColumn("arr", format_string("{%d,%d,%d}", $"pd_id", $"score",$"rank"))
.groupBy("event_tra", "customer", "itemId", "ckey").agg(collect_list("arr").as("collection"))
.select(format_string("{%s,%s,%s,%s,%s,%s}", $"event_tra", $"customer", $"itemId", $"ckey", col("collection").toString).as("data"))