gpt4 book ai didi

Apache Spark 数据集创建中的 Scala 泛型类型用法

转载 作者:行者123 更新时间:2023-12-02 09:20:49 25 4
gpt4 key购买 nike

以下代码在 Spark 中创建一个空数据集..

    scala> val strings = spark.emptyDataset[String]
strings: org.apache.spark.sql.Dataset[String] = [value: string]

emptyDataset 的签名是..

     @Experimental  
@InterfaceStability.Evolving
def emptyDataset[T: Encoder]: Dataset[T] = {
val encoder = implicitly[Encoder[T]]
new Dataset(self, LocalRelation(encoder.schema.toAttributes), encoder)
}

为什么上面的签名没有强制 T 成为编码器的子类型?

它接受 String 类型的 T 并为 String 创建一个编码器并将其传递给 Dataset 构造函数。它最终创建 Dataset[String]。

最佳答案

这个语法实际上是一个需要隐式 Encoder[T] 的语法糖。 。以下功能是等效的:

def foo[A : Encoder](a: A)

def foo[A](a: A)(implicit encoder: Encoder[A])

子类型化的语法实际上是由类型边界定义的,类似于 A <: B例如。我希望这对您有帮助。

关于Apache Spark 数据集创建中的 Scala 泛型类型用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42781698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com