<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                Spark 的難點之一便是理解跨集群執行代碼時變量和方法的范圍和生命周期。在范圍之外修改變量的 RDD 操作可能經常引起混淆。比如,在 foreach() 之外修改除累加器之外的其他變量可能會導致未定義的行為。如下代碼所示: ```scala var counter = 0 var rdd = sc.parallelize(1 to 100) // 不要像這樣做,在RDD中修改RDD外部變量counter rdd.foreach(x => counter += x) println("Counter value: " + counter) //永遠為 0 ``` 上述代碼的行為可能無法按預期工作。為了執行作業,Spark 將 RDD 操作的處理分解為任務,每個任務由執行程序執行。在執行之前,Spark 計算任務的閉包。<ins>閉包是那些執行程序在 RDD 上執行其計算時必須可見的變量和方法(在本例中為 foreach())</ins>。這個閉包被序列化并發送給每個執行器。 <br/> <ins>傳遞給每個執行器的閉包中的變量現在是副本</ins>,因此,當在 foreach 函數中引用 counter 時,它不再是驅動節點上的計數器。在驅動節點的內存中仍然有一個計數器,但它對執行器不再可見!執行者只看到來自序列化閉包的副本。因此,counter 的最終值仍然是零,因為 counter 上的所有操作都引用了序列化閉包中的值。<br/> 為了確保在這類場景中定義良好的行為,應該使用累加器。Spark 中的**累加器**專門用于提供一種機制,以便在集群中的工作節點之間執行分割時安全地更新變量。 <br/> 一般來說,像循環或局部定義方法這樣的閉包結構不應該用來改變全局狀態。<ins>一些這樣做的代碼可能在本地模式下工作,但那只是偶然的</ins>,而且這樣的代碼在分布式模式下不會像預期的那樣工作。如果需要全局聚合,則使用累加器。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看