使用 concat 时的列名

Column name when using concat

我正在使用 concat 函数连接 Spark SQL 中的一些列。这是一些虚拟代码:

   import org.apache.spark.sql.functions.{concat, lit}

    val data1 = sc.parallelize(Array(2, 0, 3, 4, 5))
    val data2 = sc.parallelize(Array(4, 0, 0, 6, 7))
    val data3 = sc.parallelize(Array(1, 2, 3, 4, 10))
    val dataJoin = data1.zip(data2).zip(data3).map((x) => (x._1._1, x._1._2, x._2 )).toDF("a1","a2","a3")

    val dataConcat = dataJoin.select($"a1",concat(lit("["),$"a1", lit(","),$"a2", lit(","),$"a3", lit("]")))

有没有办法指定或更改列的标签以避免不太实用的默认名称?

+---+------------------------+
| a1|concat([,a1,,,a2,,,a3,])|
+---+------------------------+
|  2|                 [2,4,1]|
|  0|                 [0,0,2]|
|  3|                 [3,0,3]|
|  4|                 [4,6,4]|
|  5|                [5,7,10]|
+---+------------------------+

使用 as or alias 方法为您的列命名。