spark scala - 将json字符串转换为json结构

时间:2017-08-31 04:41:44

标签: scala apache-spark spark-dataframe

我有一个数据框,其架构如下所示

 |-- 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)

请帮忙

1 个答案:

答案 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"))