pyspark必知必會(持續更新中)

RDD 和DF

  • 聯繫
  1. 都是彈性分佈式數據集,輕量集
  2. 惰性機制,延遲計算
  3. 根據內存情況,自動緩存,加快計算速度
  4. 都有partition概念
  5. 衆多相同的算子
  • 區別
    DF引入了schema和off-heap
    schema RDD每一行的數據結構都是一樣的
    off-heap 意味着JVM堆以外的內存
  1. RDD
    優點:
  • 強大,內置很多函數操作,group,map,filter等,方便處理結構化或非結構化數據

  • 面向對象編程,直接存儲的java對象,類型轉化也安全

    缺點:

  • 由於它基本和hadoop一樣萬能的,因此沒有針對特殊場景的優化,比如對於結構化數據處理相對於sql來比非常麻煩

  • 默認採用的是java序列號方式,序列化結果比較大,而且數據存儲在java堆內存中,導致gc比較頻繁。

  1. DF
    優點:
  • 結構化數據處理非常方便,支持Avro, CSV, elastic search, and Cassandra等kv數據,也支持HIVE tables, MySQL等傳統數據表

  • 有針對性的優化,由於數據結構元信息spark已經保存,序列化時不需要帶上元信息,大大的減少了序列化大小,而且數據保存在堆外內存中,減少了gc次數。

  • hive兼容,支持hql,udf等

    缺點:

  • 編譯時不能類型轉化安全檢查,運行時才能確定是否有問題

  • 對於對象支持不友好,rdd內部數據直接以java對象存儲,dataframe內存存儲的是row對象而不能是自定義對象

reducebykey 和combinebykey

在這裏插入圖片描述在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章