代码之家  ›  专栏  ›  技术社区  ›  samba

scala-如何将数据帧的列与concat连接?

  •  1
  • samba  · 技术社区  · 6 年前

    我想连接我的数据帧的列。我写了一个自定义项来实现这一点,但正如我所见 concat_ws 传递时需要列 Array[String] . 如何正确传递数据帧的列?

    val columns = salesDF.columns
    val concatColumns = udf((arr: Seq[String]) => arr.mkString(" "))
    
    salesDF.select(concat_ws(",", concatColumns(columns)))
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   eliasah    6 年前

    你只需要通过选择作为 Array[Column] :

    import org.apache.spark.sql.functions.{col,concat_ws}
    
    val selection = salesDF.columns.map(col)
    salesDF.select(concat_ws(",", selection : _*))