2017-08-31 107 views
-1

我有模式的数据帧像下面火花斯卡拉 - JSON字符串转换成JSON结构

|-- aaa: string (nullable = true) 
|-- bbb: long (nullable = false) 
|-- ccc: string (nullable = true) 
|-- ddd: string (nullable = true) 
|-- eee: long (nullable = false) 

我已经有结果VAL针对以上。

我想要的模式转换如下用火花斯卡拉

|ddd:struct (nullable = true) 
     |-- aaa: string (nullable = true) 
     |-- bbb: string (nullable = true) 
     |-- ccc: string (nullable = true) 
     |-- eee: string (nullable = true) 

请帮

+1

请出示你的努力和发布您的代码。 –

+0

欢迎来到计算器。请给出你的问题的更详细的描述。尽可能包含代码。 –

回答

0

您应该使用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")) 
+0

喜恶劣感谢您的答复 – gayathri

+0

但它附加 – gayathri

+0

我要创建一个新的模式作为 – gayathri