dies programmatisch zu tun, können Sie eine Folge von Ausdrücken mit (0 until 3).map(i => col("temp").getItem(i).as(s"col$i"))
erstellen können (vorausgesetzt, dass Sie 3 Spalten als Ergebnis müssen) und es dann gelten select
mit : _*
Syntax:
df.withColumn("temp", split(col("columnToSplit"), "\\.")).select(
(0 until 3).map(i => col("temp").getItem(i).as(s"col$i")): _*
).show
+----+----+----+
|col0|col1|col2|
+----+----+----+
| a| b| c|
| d| e| f|
+----+----+----+
Um alle Spalten zu halten:
df.withColumn("temp", split(col("columnToSplit"), "\\.")).select(
col("*") +: (0 until 3).map(i => col("temp").getItem(i).as(s"col$i")): _*
).show
+-------------+---------+----+----+----+
|columnToSplit| temp|col0|col1|col2|
+-------------+---------+----+----+----+
| a.b.c|[a, b, c]| a| b| c|
| d.e.f|[d, e, f]| d| e| f|
+-------------+---------+----+----+----+
Funktioniert gut, Danke! –
Welcher Import ist für die Aufteilung erforderlich? – Jake
@Jake import org.apache.spark.sql.functions.split verwenden Sie dies –