首页 > 解决方案 > 使用 df.as[T] 和 df.asInstanceOf[Dataset[T]] 有什么区别?

问题描述

df.as[T]如标题所述,使用和之间的主要区别是什么df.asInstanceOf[Dataset[T]]

标签: scalaapache-spark

解决方案


首先,asInstanceOf只是告诉编译器闭嘴并相信你是类df的一个实例(由于类型擦除,T 部分无关紧要)。在运行时,如果该值不是该类的实例,您将得到一个异常;在这种情况下,它永远不会。Dataset

另一方面,as是在 Dataset 类中定义的一个方法,它要求一个隐式编码器,以便它可以安全地转换数据;请注意,由于数据是在运行时处理的,因此转换仍可能失败。

所以区别很大,你不应该使用前者。


推荐阅读