DataFrame

介紹 DataFrame 之前,先來介紹什麼是 DataSet

Dataset :

  • Dataset 在 Spark 1.6 版加入的 Interface;在 2.x 版開始成為了 Spark 的主要 libaries 的基石。

  • Dataset 是個強型別的分散式的資料集合,我們可以表示成 Dataset[T],針對特定的物件,可以透過一些相關性操作及函式操作去做平行化的 Transformation。

  • 嚴格來說,Dataset 是半結構化的資料格式,搭配 SparkSQL 優化引擎,並保留了 RDD 的優點。

  • A Dataset is a strongly typed collection of domain-specific objects that can be transformed in parallel using functional or relational operations.

DataFrame :

  • DataFrame 其實就是 Dataset[Row],在概念上相當於 table ,有 Schema、有column、有 raw。我們可以對 row 做處理,也可以已 Column 為單位做處理。

  • 我們可以透過讀取結構化的資料去產生 DataFrame,也可以讀取資料庫的 table 去產生 DataFrame。

DataFrame Operations :

  • SQL language : 透過 df.CreateTempView('view_name') 的方法去註冊一張表 table,再透過 SparkSession 的 sql() 方法去下 SQL 指令。

  • Transformations、Actions method : Dataset 本身保留了 具備 RDD 的特性,同時也有 Transformation 跟 Action 的方法,而這些方法使用起來亦如同 SQL 語法。 例如 : select、filter(where)、groupBy、orderBy、join、map ...etc。

上面提到過,對 DataFrame,我們可以針對 Column 做處理,我們可以針對 class Column 建立的物件去做處理,亦可以透過一些 Dataset 的基本 函式。

  • Functions : aggregation、math、string、date、collection ...etc。其中的 aggregate function 可以搭配 groupBy() 使用,諸如 sum、count、collect_list。

方法非常的多,有興趣可以直接上官方文件看,若是用 pyspark 也可以直接到下面連結去找。

http://spark.apache.org/docs/2.2.1/api/python/pyspark.sql.html#pyspark.sql.functions.collect_list

Last updated