1.1 DataFrame是什么
- DataFrame是一種以RDD為基礎的分布式數據集,類似于傳統數據庫中的二維表格。
1.2 DataFrame和RDD的區別
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-0PH9hGCO-1655396298057)(assets/1653400255144.png)]
-
上圖直觀地體現了DataFrame和RDD的區別。
-
DataFrame是基于RDD之上的分布式數據集,給予Schema信息。
- 左邊:RDD -> 數據外在類型:Person(CaseClass),內部結構不知道
- 右邊:DataFrame -> 數據內部結構,全部知道,包含字段名稱和字段類型,但是不知道外部類型,Row類型(弱類型)
DataFrame = RDD[Row] + Schema
1.2 RDD與DataFrame性能
- Spark SQL性能上比RDD要高。因為Spark SQL了解數據內部結構,從而對藏于DataFrame背后的數據源以及作用于DataFrame之上的變換進行了針對性的優化,最終達到大幅提升運行時效率的目標。反觀RDD,由于無從得知所存數據元素的具體內部結構,Spark Core只能在Stage層面進行簡單、通用的流水線優化。