我有下面的代码来缓存不同的分区,并将它们保存在一个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方面的经验多。任何帮助都是非常感谢的。
1条答案
按热度按时间dxxyhpgq1#
如异常中所述,您尝试对Option[DataFrame]调用函数unionByName,但由于Option类型上没有此类函数,因此调用失败。您需要Map或从Option获取基础 Dataframe ,以便能够使用df函数
您可以尝试以下示例: