2016-08-26 4 views
1

pyspark에서 문제를 해결하려고 노력 중입니다. 무엇인가를 획득,pyspark에서 reduceByKey를 사용하여 요소를 목록에 추가하는 방법

[{key1: tuple1}, {key1: tuple2}....{key2: tuple1}, {keyN: tupleN}] 

나는 각 키에 대해 동일한 키를 가진 모든 튜플에 목록을 추가하는 척 : 후지도 기능을 사용하여 같은 계산을,이 방법으로 dicts의 목록을 포함하는 RDD이 같은 :

[{0: (0, 1.0)}, {0: (1, 0.0)}, {1: (0, 0.0)}, {1: (1, 1.0)}, {2:(0,0.0)}... ] 

그리고이 같은 dicts의 목록을 얻으려면 싶습니다 :

[{key1: [tuple1, tuple2, tuple3...]}, {key2: [tuple1, tuple2....]}] 

나는 예는 더 설명 생각

[{0: [(0, 1.0), (1, 0.0)}, {1: [(0, 0.0), (1, 1.0)]}, {2:[(0,0.0),...]},...] 

"combineByKey"기능을 사용하는 것을 피하려고합니다. 시간이 너무 오래 걸리므로 "reduceByKey"로 할 수 있습니다. ??

감사합니다.

답변

0

여기 reduceByKey를 사용하지 않고 가능한 솔루션입니다하지만 단지 내장 기능 파이썬 :

from collections import defaultdict 


inp = [{0: (0, 1.0)}, {0: (1, 0.0)}, {1: (0, 0.0)}, 
     {1: (1, 1.0)}, {2: (0, 0.0)}] 

out = defaultdict(list) 

for v in inp: 
    for k, v1 in v.iteritems(): 
     out[k].append(v1) 

out = [{k: v} for k, v in out.iteritems()] 
print out 
관련 문제