[SPARK] 兩種資料型態: val 和 var

在上一篇文章中, 說明了在 Spark 中對 RDD 操作的限制,
然而, 比較不精確的地方在於,
在 Spark 中有另一種不同於 val 變數, 稱為 var,
可以供我們進行一般的運算.

舉例來說:
scala> val foo = 1
foo: Int = 1
scala> var bar = 1
bar: Int = 1
scala> bar = 2
bar: Int = 2
scala> foo = 2
<console>:25: error: reassignment to val
       foo = 2
           ^
可以看到, 宣告為 val 的參數 (foo) 無法改變,
但是, 作為 var 的參數 (bar) 可以被改變.
在 Spark 中, val 和 var 都是 RDD,
然而, 考慮到平行運算的特性, 在 Spark 程式中應該養成以 val 為主的習慣,
在平行計算中, 若是一參數是可變的 (如: var),
則原本程式間的時序性將會出現問題 (其他平行的處理緒也可以更改其值),
因此, val 可以確保 Spark 在平行計算時的一致性.

總而言之, 在 Spark 程式中, 為了善用其運算特性,
應該要好好設計資料結構, 多用 val 以及 Action 和 Transformation 來處理,
var 比較適合用於暫存變數, 並要特別注意在平行計算時的處理.


留言

熱門文章

LTE筆記: RSRP, RSSI and RSRQ

[WiFi] WiFi 網路的識別: BSS, ESS, SSID, ESSID, BSSID

LTE筆記: 波束成型 (beamforming) 和天線陣列