【发布时间】:2022-01-25 14:00:42
【问题描述】:
假设我有两个具有相似架构的不同数据框:
df0.printSchema
root
|-- single: integer (nullable = false)
|-- double: integer (nullable = false)
和:
df1.printSchema
root
|-- newColumn: integer (nullable = false)
|-- single: integer (nullable = false)
|-- double: double (nullable = false)
现在我合并这两个模式,如下所示,并使用这个合并的模式创建一个新的数据框:
val consolidatedSchema = df0.schema.++:(df1.schema).toSet
val uniqueConsolidatedSchemas = StructType(consolidatedSchema.toSeq)
val emptyDF = spark.createDataFrame(spark.sparkContext.emptyRDD[Row], uniqueConsolidatedSchemas)
emptyDF.printSchema
root
|-- newColumn: integer (nullable = false)
|-- single: integer (nullable = false)
|-- double: integer (nullable = false)
|-- double: double (nullable = false)
但正如您所见,我有两个字段名称为double,但数据类型不同。
如何保留其数据类型与 df0 架构中的那个匹配的那个并删除另一个?
我希望最终的架构是这样的:
finalDF.printSchema
root
|-- newColumn: integer (nullable = false)
|-- single: integer (nullable = false)
|-- double: integer (nullable = false)
如果您建议任何其他方法来合并这两个模式并达到我的目标,我真的很感激。
提前谢谢你。
【问题讨论】:
标签: dataframe scala apache-spark apache-spark-sql