gpt4 book ai didi

scala - Spark 合并具有不匹配架构的数据帧,无需额外的磁盘 IO

转载 作者:行者123 更新时间:2023-12-02 02:52:02 25 4
gpt4 key购买 nike

我想合并 2 个具有(可能)不匹配架构的数据帧

org.apache.spark.sql.DataFrame = [name: string, age: int, height: int]
org.apache.spark.sql.DataFrame = [name: string, age: int]

scala> A.unionAll(B)

会导致:

org.apache.spark.sql.AnalysisException: Union can only be performed on tables with the same number of columns, but the left table has 2 columns and the right has 3;

我想在 Spark 内部执行此操作。但是,Spark 文档仅建议将整个 2 个数据帧写入一个目录,并使用 spark.read.option("mergeSchema", "true") 将它们读回。

link to docs

所以联合并不能帮助我,文档也不能帮助我。如果可能的话,我希望将这些额外的 I/O 排除在我的工作之外。我是否遗漏了一些未记录的信息,或者还不可能?

最佳答案

您可以将空列附加到帧 B 以及并集 2 帧之后:

import org.apache.spark.sql.functions._
val missingFields = A.schema.toSet.diff(B.schema.toSet)
var C: DataFrame = null
for (field <- missingFields){
C = A.withColumn(field.name, expr("null"));
}
A.unionAll(C)

关于scala - Spark 合并具有不匹配架构的数据帧,无需额外的磁盘 IO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39869084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com