【问题标题】:Pyspark Cast StructType as ArrayType<StructType>Pyspark 将 StructType 转换为 ArrayType<StructType>
【发布时间】:2018-10-21 02:00:31
【问题描述】:

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

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

和另一个具有 col1 结构的数据框 df2:

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

为了联合 df1.union(df2),我尝试将 df2 中的列转换为将其从 StructType 转换为 ArrayType(StructType),但是我尝试过的没有任何结果。

任何人都可以建议如何做同样的事情。 我是 pyspark 的新手,不胜感激。

【问题讨论】:

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


【解决方案1】:

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

输入:

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

df2(带有 StructType() 列):

代码:

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

输出:

修改后的df2:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-13
    • 1970-01-01
    • 1970-01-01
    • 2015-09-03
    • 1970-01-01
    • 2017-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多