Pyspark将StructType类型转换为ArrayType <structtype>

时间:2018-05-10 18:06:48

标签: python apache-spark dataframe pyspark spark-dataframe

我有一个数据帧df1,其列col1具有结构:

StructField(recipientResource,ArrayType(StructType(List(StructField(resourceId,StringType,true),StructField(type,StringType,true))),true),true)

另一个数据帧df2,其col1具有结构:

StructField(recipientResource,StructType(List(StructField(resourceId,StringType,true),StructField(type,StringType,true))),true)

为了联合df1.union(df2),我试图在df2中强制转换它以将它从StructType转换为ArrayType(StructType),但是我尝试过没有尝试过。

任何人都可以建议如何去做同样的事情。 我是pyspark的新手,感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

这是使用array()函数的简单解决方案:

输入:

df1(带有ArrayType(StructType())列):

enter image description here

df2(带有StructType()列):

enter image description here

代码:

df2=(df2
     .withColumn('recipientResource',array(col('recipientResource'))) #convert StructType() column to ArrayType(StructType()) column
    )

输出:

修改后的df2:

enter image description here

df3(将df1和df2合并后的输出):

enter image description here