[英]Concat of all data frame columns using fold, reduce with Spark / Scala
以下內容可用於動態列生成:
import org.apache.spark.sql.functions._
import sqlContext.implicits._
import org.apache.spark.sql.DataFrame
val input = sc.parallelize(Seq(
("a", "5a", "7w", "9", "a12", "a13")
)).toDF("ID", "var1", "var2", "var3", "var4", "var5")
val columns_to_concat = input.columns
input.select(concat(columns_to_concat.map(c => col(c)): _*).as("concat_column")).show(false)
返回:
+-------------+
|concat_column|
+-------------+
|a5a7w9a12a13 |
+-------------+
在保留動態列生成的同時,如何使用foldLeft,reduceLeft做到這一點?
我總是得到一個錯誤,或者返回一個空值。 盡管concat足夠了,但我對折疊等如何起作用感到好奇。
絕對不是可行的方法 *,但是如果您將其視為編程練習,請執行以下操作:
import org.apache.spark.sql.functions.{col, concat, lit}
columns_to_concat.map(col(_)).reduce(concat(_, _))
要么
columns_to_concat.map(col(_)).foldLeft(lit(""))(concat(_, _))
*因為
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.