python使用spark需要哪些包_通过Python使用Spark准备我的大数据

我的100m大小,量化数据:

(1424411938', [3885, 7898])

(3333333333', [3885, 7898])

所需结果:

(3885, [3333333333, 1424411938])

(7898, [3333333333, 1424411938])

所以我想要的是转换数据,以便我将3885(例如)与所有data[0]具有该数据的组组合在一起。这是我在python中所做的:

def prepare(data):

result = []

for point_id, cluster in data:

for index, c in enumerate(cluster):

found = 0

for res in result:

if c == res[0]:

found = 1

if(found == 0):

result.append((c, []))

for res in result:

if c == res[0]:

res[1].append(point_id)

return result

但是当我mapPartitions()“编dataRDD带prepare(),它似乎做我想做的只是在当前分区,从而恢复比期望的更大的成绩。

例如,如果开始时的第一个记录在第一个分区中,第二个在第二个分区中,那么我得到的结果是:

(3885, [3333333333])

(7898, [3333333333])

(3885, [1424411938])

(7898, [1424411938])

如何修改我prepare()以获得预期的效果?或者,如何处理prepare()产生的结果,以便我可以获得所需的结果?

正如您可能已经从代码中注意到的那样,我根本不在乎速度。

这是一种创建数据的方法:

data = []

from random import randint

for i in xrange(0, 10):

data.append((randint(0, 100000000), (randint(0, 16000), randint(0, 16000))))

data = sc.parallelize(data)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值