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]。