赞
踩
rdd = sc.parallelize([1,2,3,4,5,6,7,8,9,10])
需求: 请将数据分为奇数和偶数二部分
划分奇数和偶数: 对2取余, 余数为 0 即为偶数 余数为1 即为奇数
def fn1(e):
if e % 2 == 0:
return 'o'
else:
return 'j'
rdd.groupBy(fn1).collect()
结果:
[
('j', <pyspark.resultiterable.ResultIterable object at 0x7f09acefba30>),
('o', <pyspark.resultiterable.ResultIterable object at 0x7f09adadb910>)
]
mapValues(list): 将 kv中value转换为list类型
rdd.groupBy(fn1).mapValues(list).collect()
结果:
[
('j', [1, 3, 5, 7, 9]),
('o', [2, 4, 6, 8, 10])
]
思考: 上述编写 fn1函数, 请问是否可以写成lambda, 如果可以, 这个lambda应该如何编写呢?
rdd.groupBy(lambda e: 'o' if e % 2 == 0 else 'j' ).mapValues(list).collect()
[
('j', [1, 3, 5, 7, 9]),
('o', [2, 4, 6, 8, 10])
]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。