s*********h 发帖数: 6288 | 1 如果我想把(key,value1) (key,value2),....(key,valueN)这样的group成
(key,[value1,value2,value3...valueN])
而不使用groupByKey,应该怎么实现啊?
另一方面用了groupByKey出现的是
(key, )
第二个东西不是一个list | c***u 发帖数: 4107 | 2 问题一:
我原来想用reduceByKey, 因为这个比groupByKey要节约时间和shuffle.
不过因为reduceByKey不能用一句话解决, 必须写一个函数, 而作业又不能自己定义函
数, 所以我就没用.
如果可以用函数.
def myFlatten(x, y):
if type(x) == list:
i = x
else:
i = [x]
if type(y) == list:
j = y
else:
j = [y]
return i + j
Assume RDD1 = {(key,value1) (key,value2),....(key,valueN)}
myRDD = RDD1.reduceBykey(myFlatten)
问题二, 是一个 iterable, 不能直接看, 不过你可以把他就当成
一个list, 后面用的时候就间接当成list用, 比如
for list:
print list
for iterable:
print [i in RDD1.map(lambda x: x[1])]
assume RDD1 = (key, ) | s*********h 发帖数: 6288 | 3 多谢回复。我后来用reduceByKey搞定了。
这道题的话不需要额外的函数因为本来的value就是一个string
所以只要加
.mapValues(lambda x: [x]).reduceByKey(lambda a,b:a+b)
就行了。
之前一直以为不对。其实出错信息是内存出错……虚拟机里面加了点内存就可以了。
spark的debug还是很麻烦啊。
【在 c***u 的大作中提到】 : 问题一: : 我原来想用reduceByKey, 因为这个比groupByKey要节约时间和shuffle. : 不过因为reduceByKey不能用一句话解决, 必须写一个函数, 而作业又不能自己定义函 : 数, 所以我就没用. : 如果可以用函数. : def myFlatten(x, y): : : : if type(x) == list: : i = x
| s******y 发帖数: 522 | 4 这个思路不错, 顶一下
不过真的比groupByKey快吗?
那groupByKey什么时候用呢
【在 s*********h 的大作中提到】 : 多谢回复。我后来用reduceByKey搞定了。 : 这道题的话不需要额外的函数因为本来的value就是一个string : 所以只要加 : .mapValues(lambda x: [x]).reduceByKey(lambda a,b:a+b) : 就行了。 : 之前一直以为不对。其实出错信息是内存出错……虚拟机里面加了点内存就可以了。 : spark的debug还是很麻烦啊。
| s*********h 发帖数: 6288 | 5 我见过的所有地方都建议不用groupbykey
partition越多越慢吧
【在 s******y 的大作中提到】 : 这个思路不错, 顶一下 : 不过真的比groupByKey快吗? : 那groupByKey什么时候用呢
| d**m 发帖数: 536 | 6 CS190的作业?
【在 s*********h 的大作中提到】 : 如果我想把(key,value1) (key,value2),....(key,valueN)这样的group成 : (key,[value1,value2,value3...valueN]) : 而不使用groupByKey,应该怎么实现啊? : 另一方面用了groupByKey出现的是 : (key, ) : 第二个东西不是一个list
| B*****g 发帖数: 34098 | 7 2nd this
【在 d**m 的大作中提到】 : CS190的作业?
| s*********h 发帖数: 6288 | 8 前面那个的。
【在 d**m 的大作中提到】 : CS190的作业?
| B*****g 发帖数: 34098 | 9 109都要结束了
【在 s*********h 的大作中提到】 : 前面那个的。
| s*********h 发帖数: 6288 | 10 这贴好几周前发的……
【在 B*****g 的大作中提到】 : 109都要结束了
|
|