Spark Dataframe轉換/行動操作
阿新 • • 發佈:2018-12-02
疑惑
最近拋棄了RDD,開始使用Dataframe,主要還是因為使用資料庫的原因.在RDD中我們都知道惰性操作,知道RDD轉換操作和行動操作的區別,但是到了Dataframe中呢,Dataframe有自己的一系列方法,雖然是萬變不離其宗,Dataframe歸根結底是一種特殊的RDD,但是很多地方都沒有對Dataframe的轉換操作和行動操作做介紹.這也是我一直疑惑的
解惑
首先,需要肯定的是Dataframe也是惰性操作的,畢竟是一種RDD,雖然我沒有看過原始碼,但是我想spark不會因為一種結構就拋棄惰性操作這樣提高效能的特性.
然後,我們看一下轉換操作和行動操作:
Transform:典型的轉換操作有讀(read),篩選(filter)、拼接(union)等等,只要這個過程只改變DataFrame的形態,而不需要實際取出DataFrame的資料進行計算,都屬於轉換。理論上來說,ETL過程中的Transfrom過程,主幹流程只會有轉換操作,不會有Action操作。
Action:典型的動作操作有計數(count),打印表(show),寫(write)等,這些操作都需要真正地取出資料,就會觸發Spark的計算。
這是我找到的很少介紹dataframe惰性操作的內容,總之還是跟RDD一樣,但是沒有很具體的介紹到底那些方法屬於轉換操作,那些屬於行動操作,但是我相信大致上還是分的清楚的,實在分不清楚的,看一下官方文件.