pyspark 错误:值unionByName不是null的成员

wd2eg0qa  于 2022-11-28  发布在  Spark
关注(0)|答案(1)|浏览(131)

我有下面的代码来缓存不同的分区,并将它们保存在一个Map中,然后将它们合并
我得到以下错误unionByName不是null的成员

Var cache_map = Map[String,Dataframe]()
for (partition <- partitionlist){
  var df_test = spark.read.format("delta").load("abfs://container@storagename.dfs.core.windows.net/dirname")
.where((col("dt").like(partition+"%"))
  cache_map(partition) = df_test.cache()
}

val cache_keys = cache_map.keys
var df_union=null
for (key <- cache_keys){
  if(df_union==null){
    df_union=cache_map.get(key)
  }
  else{
 df_union=df_union.unionByName(cache_map.get(key)
}
}

当我下面做
cache_map.get("20221120").unionByName(cache_map.get("20221119"))
我收到以下错误
错误:值unionByName不是选项[org.apache.spark.sql.DataFrame]的成员
有谁能帮我看看哪里出了问题吗?我在spark使用scala方面的经验不如在pyspark方面的经验多。任何帮助都是非常感谢的。

dxxyhpgq

dxxyhpgq1#

如异常中所述,您尝试对Option[DataFrame]调用函数unionByName,但由于Option类型上没有此类函数,因此调用失败。您需要Map或从Option获取基础 Dataframe ,以便能够使用df函数
您可以尝试以下示例:

cache_map.get("20221120").map{_.unionByName(cache_map.get("20221119").getOrElse(spark.emptyDataFrame))}

相关问题