下面的代码在Scala 2.11上运行良好,在Scala 2.12上出现错误“value nonEmpty is not a member of Object”。有人能提供解决方案吗?
val ds = spark.createDataset(List("abc","efg","xyz"))
ds.foreachPartition(
partitionIterator =>
{
if(partitionIterator.nonEmpty){
print(partitionIterator.getClass)
}
}
)
尝试从Spark 2.4迁移到Spark 3.2集群及以上代码在Spark 3.2集群上失败
2条答案
按热度按时间vmjh9lq91#
尝试添加lambda参数的类型,即替换
与
与2.11相反,2.12中没有推断类型。
在Scala中,有时候你必须指定变量、泛型等的类型,尽管通常有类型推断。
当你从一个版本切换到另一个版本时,标准库会发生变化,编译器类型推断算法也会发生变化,尤其是当你从2.x切换到2.y时。
顺便说一下,在2.13中,错误是
missing parameter type: partitionIterator => {
,而不是2.12中的value nonEmpty is not a member of Object: if (partitionIterator.nonEmpty) {
。jq6vz3qz2#
您应该尝试使用
hasNext
方法而不是nonEmpty
。