RDD用法与实例(五):glom的用法

本文介绍了Spark中RDD的glom操作,该操作用于将同一分区内的元素合并为一个数组。glom是一个Transformation算子,通常可以观察到的结果是每个分区的数据会被整合成一个数组。然而,在某些情况下,可能会遇到所有分区数据相同的情况,这可能是由于随机性导致的种子问题。
摘要由CSDN通过智能技术生成

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.

正常结果:
在这里插入图片描述
(由于随机性,浮点数组可能不一样)

偶然发抽的不正常结果:

在这里插入图片描述
每个分区居然是一样的种子

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值