2016-04-10 18 views
0

pythonからitertoolsを実行することはできますか?pysparkのitertoolsからの組み合わせ()の使い方

(私は私が同じidに をリスト単語を取得するには(ワード、ID)にIDを抽出したいこれらは、次の手順 としてやりたい

data_rdd = sc.parallelize([(u'a',1),(u'b',1),(u'c',1),(u'c',2),(u'd',2)]) 

ようRDDデータを持っていることを仮定id = 1と( 'c'、 'd')= 2のように( 'a'、 'b'、 'c')のように抽出します。

次に、itertoolsの組み合わせを実行して各IDの可能な組み合わせを見つけます

結果は

のようになります
[((u'a',u'b'),1),((u'a',u'c'),1),((u'b',u'c'),1),((u'c',u'd'),2)] 

が、私はpyspark

答えて

0

でitertoolsを使用する方法のアイデアを持っていないあなたは(RDDSは反復可能ではない)ことができないとする理由はありません。必要なのはjoinfilterです。

def swap(kv): 
    k, v = kv 
    return v, k 

def is_match(kv): 
    _, (v1, v2) = kv 
    return v1 < v2 

swapped = data_rdd.map(swap) 
swapped.join(swapped).filter(is_match).map(swap) 
関連する問題