我有一个数据框,其架构如下所示
|-- aaa: string (nullable = true)
|-- bbb: long (nullable = false)
|-- ccc: string (nullable = true)
|-- ddd: string (nullable = true)
|-- eee: long (nullable = false)
我已经在上面找到了val的结果。
我想使用spark scala
转换下面的架构 |ddd:struct (nullable = true)
|-- aaa: string (nullable = true)
|-- bbb: string (nullable = true)
|-- ccc: string (nullable = true)
|-- eee: string (nullable = true)
请帮忙
答案 0 :(得分:1)
您应该使用struct function
第一种方法是使用withColumn
api,如果您不想要原始列,可以drop
将它们作为
import org.apache.spark.sql.functions._
df.withColumn("ddd", struct(col("aaa"), col("bbb").cast(StringType).as("bbb"), col("ccc"), col("eee").cast(StringType).as("eee"))).drop("aaa", "bbb", "ccc", "eee")
第二种方法是使用select
api作为
df.select(struct(col("aaa"), col("bbb").cast(StringType).as("bbb"), col("ccc"), col("eee").cast(StringType).as("eee")).as("ddd"))