RDD用法與例項(五):glom的用法

水母君98發表於2020-09-27

glom

1、glom的作用是將同一個分割槽裡的元素合併到一個array裡
2、glom屬於Transformation運算元

# Example: glom
import sys
import random

a = sc.parallelize(range(0,100),10) #parallelize 進行並行處理,0~100每隔10步長取一次 
print(a.collect()) #沒有glom所以不分組
print(a.glom().collect())
print(a.map(lambda x: random.random()).glom().collect())# glom函式(glom有偷、搶、看的意思)
  #該函式把一個RDD中每一個partition上的所有T型別的元素轉換為Array[T]即把每個partition上的元素全部集中到一個陣列中
    #random.random 隨機生成0-1的浮點數

# Weird behavior: Initially, random numbers are synched across all workers, but will get 
# out-of-sync after a large (e.g, 1000000) number of random numbers have been generated.

正常結果:
在這裡插入圖片描述
(由於隨機性,浮點陣列可能不一樣)

偶然發抽的不正常結果:

在這裡插入圖片描述
每個分割槽居然是一樣的種子

相關文章