我對 Spark 的資料幀.as[]功能有點困惑,在它說的檔案中
回傳一個新的資料集,其中每個記錄都已映射到指定的型別。
但例如,如果我這樣做:
case class Person(id: Int, name: String)
case class NewPerson(id: Int)
val person1 = Person(1, "a")
val df = Seq(person1).toDF()
val ds = df.as[NewPerson]
ds我得到的資料集仍然有兩列id和name類Person。我希望只有id類的列NewPerson。
函式在這里做了什么?
uj5u.com熱心網友回復:
實際上,as方法只更改資料的視圖,而不是資料本身,如檔案中所述:
請注意,as[] 僅更改傳遞到型別化操作(例如 map())的資料的視圖,并且不會急切地投影掉指定類中不存在的任何列。
因此as不會洗掉您的案例類中不存在的列,它只會創建您可以在型別化操作中使用的行的視圖。
uj5u.com熱心網友回復:
添加到 Vincent Doba 的答案中,如果您使用 case 類A創建了一個型別為 ds 的值,Dataset[A]那么您可以使用以下命令將其截斷為您需要的欄位:
val ds_clean: Dataset[A] = ds.map(identity)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/363983.html
