使用concat时的列名

时间:2016-03-12 21:25:22

标签: apache-spark apache-spark-sql

我使用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]|
+---+------------------------+

1 个答案:

答案 0 :(得分:3)

使用asalias方法为列命名。