日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

spark 笔记

發布時間:2024/10/12 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spark 笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 分布式計算,數據盡量在本地計算,減少網絡I/O
  • 如果操作之間相互關系不大,則盡量采用分布式計算。
  • ?

    ?

    spark采用分布式計算中的master-slave模型,master對應含有master進程的節點,slave對應含有worker進程的節點。Client 負責提交應用,driver負責控制應用的執行。

    ?

    基本組件

    • Cluster managermaster節點,控制整個集群
    • Worker: 計算節點
    • Driver: 運行application main函數 并創建 spark context
    • Executor: 用于啟動線程池執行任務,每一個application擁有一組獨立的 Executor
    • Spark context: 整個應用的上下文,控制應用的生命周期
    • RDD DAG 一組RDD構成的有向無環圖。當RDD遇到一個action算子時候,將之前所有的算子形成一個rdd graph. 并把這個rdd graph轉化為job提交到cluster中執行
    • Job. 一個Rdd Graph觸發的作業。往往由Spark Context通過 runJob方法向spark 提交job
    • DAG scheduler. 每個job會根據RDD DAG構建 Stage DAG 并把stage交給 Task Scheduler。
    • Task Scheduler: task 分發給 task scheduler
    • SparkEnv: 線程級別的上下文

    Spark Env包括以下幾部分

  • MapOutPutTracker: 負責 Shuffle元信息的存儲
  • BroadcastManager: 負責廣播變量的控制和元信息的存儲
  • BlockManger: 負責存儲管理,創建和查詢塊
  • MetricsSystem: 監控運行時性能指標信息
  • SparkConf: 負責存儲配置信息
  • ?

    spark主要流程

  • Client 提交應用給 master
  • master啟動一個worker來執行 driver
  • driver生成 RDD Graph 再由 DAG scheduler轉化為 Stage DAG
  • Dag scheduler提交 stage dagtask scheduler
  • Task scheduler提交 taskexcutor
  • ?

    RDD兩種創建方式

  • 從已有的rdd 轉換生成
  • hdfs中讀取
  • ?

    RDD 相關

  • 邏輯上的RDD的每個分區叫一個partition
  • 一個變換將一個RDD變換成另外一個RDD,這些RDD之間通過Lineage產生依賴關系
  • 分區只是一個邏輯概念,變換前和變換后的分區可能是同一塊內存存儲
  • 有些RDD是計算的中間結果,不一定有物理的存儲空間與之對應,如果需要迭代使用數據,可以調用cache()函數來緩存數據
  • 在物理上,RDD對象實質上是一個元數據結構,存儲著Block, Node等的映射關系,以及其他的元數據信息。
  • 一個RDD就是一組分區,每個分區就是一個block。 block可以存儲在內存中,如果內存不夠時可以存儲在磁盤上?
  • Note: 如果是從HDFS等外部存儲結構中讀取數據,數據則按照HDFS中的數據分布策略進行數據分區,HDFS中的一個block對應spark的一個分區?

  • spark支持重分區,數據通過spark默認或者用戶自定義的分區器進行分區,決定數據塊分布在哪些節點上。
  • ?

    ?

    Transformation 算子

  • 輸入輸出分區一對一型

  • Map. 將原有的Rdd中的數據項通過用戶自定的function map成新的元素。得到一個類型為MappedRDD的新RDD
  • Flatmap. 將原有RDD中的元素通過函數f轉換為新的元素,并將生成的RDD合并為一個集合。 得到一個類型為FlatMappedRDD的心RDD
  • Map patitions. 獲取每個分區的迭代器,在函數中通過這個分區整體的迭代器對整個分區進行操作。得到一個新的類型為MapPartitionsRDD 的新RDD
  • Glom. glom函數將每個分區形成一個數組。得到一個新的GlommedRDD
  • 輸入和輸出分區多對一

  • Union.
  • 保證兩個RDD中的數據類型是相同的。
  • 合并后類型和原有類型相同
  • 不進行去重操作,如果想去重可以使用distinct
  • ++ 相當于union操作
  • Cartesian. 對兩個集合的素有元素做笛卡兒積
  • 輸入輸出多對多

  • Groupby. 將元素按照function生成key,數據轉化為key-value格式,之后將key相同的元素分為一組。
  • 輸出是輸入分區的子集。

  • Filter. 對元素應用function過濾。 生成一個新的filtered RDD
  • Distinct。 將元素去重。
  • Subtract. 將元素進行集合的差操作。
  • Sample. RDD集合內的元素進行采樣,獲取子集。 用戶可以指定采樣方式。
  • Takesample. sample類似,但是不指定采樣的比例而是指定采樣個數。
  • cache型算子

  • Cache. RDD元素緩存到內存。相當于persist(MEMORY_ONLY).
  • Persist. RDD進行緩存操作。數據緩存在什么地方,由storage level枚舉類型決定。
  • ?

    Action 算子

  • 無輸出
  • Foreach.
  • SaveAsTextFile. 將數據輸出,存儲在指定的HDFS目錄。
  • ?RDD Dependencies

    1. Narrow Dependencies. ?each partition of the parent RDD is used by at most one partition of the child RDD.

    • allow for pipelined execution on one cluster node.
    • easy fault recovery
    • Transformation: map、flatMap、filter、sample

    2. Wide Dependencies. multiple child partitions may depend on a parent partition.

    • require data from all parent partitions to be available and to be shuffled across the nodes
    • a single failed node might cause a complete reexecution
    • Transformation:?sortByKey、reduceByKey、groupByKey、cogroupByKey、join、cartensian

    ? ? ?  ?

    ?

    ?

    ?

    轉載于:https://www.cnblogs.com/shexinwei/p/4614697.html

    總結

    以上是生活随笔為你收集整理的spark 笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。