1
下面的代码创建的火花空数据集..Scala的泛型类型使用
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成为编码器的子类型?
它接受T作为String类型,并为String创建一个编码器并将其传递给Dataset构造函数。最终创建Dataset [String]。