8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

Spark 3.4.1 中 Dataset Reduce 操作期间出现 ClassCastException

user20325868 1月前

13 0

将 Apache Spark 从版本 3.2.1 升级到 3.4.1 后,我遇到了与类型转换相关的运行时错误。此错误在以前的版本中没有发生过。具体来说,是 java.lang。

将 Apache Spark 从版本 3.2.1 升级到 3.4.1 后,我遇到了与类型转换相关的运行时错误。此错误在以前的版本中没有发生。具体来说,在自定义案例类上使用 Dataset.reduce() 时会抛出 java.lang.ClassCastException。以下是重现此问题的代码的简化版本:

case class CustomCaseClass(id: String, body: Map[String, Int])
val result = someDataset
  .groupByKey(ds => ds.id)(Encoders.STRING)
  .mapGroups((key, iter) => CustomCaseClass(key, Map(key -> iter.length)))(Encoders.product)
  .reduce((before, next) => before.copy(body = before.body ++ next.body))

执行此代码时,出现以下错误:

class threw exception: java.lang.ClassCastException: CustomCaseClass cannot be cast to CustomCaseClass

这个错误令人费解,因为它试图将 CustomCaseClass 转换为自身。我尝试了以下方法,但问题仍然存在:

使用显式编码器禁用 AQE(自适应查询执行)

问题:

在 Spark 3.4.1 中什么原因导致此 ClassCastException?

我是否应该修改某些特定的序列化器选项?

我是否应该使用更精确的 Encoder 而不是 Encoders.product?如果是,该怎么做?

Spark 3.4.1 中是否存在任何已知问题或变化可能会导致这种情况?

我应该修复什么才能解决此错误?

任何见解或解决方案都将不胜感激。谢谢!

环境:

Spark版本:3.4.1Scala版本:2.12.17Jvm:1.8.0.341

帖子版权声明 1、本帖标题:Spark 3.4.1 中 Dataset Reduce 操作期间出现 ClassCastException
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由user20325868在本站《scala》版块原创发布, 转载请注明出处!
最新回复 (0)
返回
作者最近主题: