DataFrame是一種不可變的分布式資料集,這種資料集被組織成指定的列,類似于關系資料庫中的表。SchemaRDD作為Apache Spark 1.0版本中的實驗性工作,它在Apache Spark 1.3版本中被命名為DataFrame。對于熟悉Python pandas DataFrame或者R DataFrame的讀者,Spark DataFrame是一個近似的概念,即允許使用者輕松地使用結構化資料(如資料表)。
通過在分布式資料集上施加結構,讓Spark使用者利用Spark SQL來查詢結構化的資料或使用Spark表達式方法(而不是lambda)。
通過建構資料,使得Apache Spark引擎——具體來說就是catalyst優化器(catalyst Optimizer)——顯著提高了Spark的查詢性能。Spark早期的API中(即RDD),由于JVM和Py4J之間的通信開銷,使用Python執行的查詢會明顯變慢。
使用Spark DataFrame,Python開發人員可以利用一個簡單的并且潛在地加快速度的抽象層。最初Spark中的Python速度慢的一個主要原因源自于Python子程序和JVM之間的通信層。對于python DataFrame的使用者,我們有一個在Scala DataFrame周圍的Python包裝器,Scala DataFrame避免了Python子程序/JVM的通信開銷。