2017-01-13 9 views
0
entries = sc.textFile(...).map(lambda line: line.split("\t")).map(lambda row:(int(row[0]),row[1])) 
some_set = set() 
for entry in entries.collect(): 
    some_set.add(entry[1]) 

上記を行うには、より良い方法がありますか?私はちょうど各エントリのi番目の要素を取得したい。だから、基本的にあなたが記述するものRDDのすべてのx [i]番目の要素を取得する

+1

あなたが値を収集しているとき、コレクト避けたいのはなぜ? 'entires.map(x => x [0])。collect()' –

+0

を実行してください。私は間違って質問を枠組みしました。 RDD全体をドライバにロードせずにx [i]をセット/リストに格納できるかどうかを知りたい。 –

答えて

1

は次のとおりです。

set(entries.keys().distinct().collect()) 

または一般

set(entries.map(operator.itemgetter(i)).distinct().collect()) 
+0

それは第1の要素 –

+0

である必要はありませんので、第2の解決策はentries.collect()よりも優れていますか?これは、RDD全体ではなくx [i]番目の要素だけを収集するためですか? –

+0

'distinct '要素だけを' collects'するのでより良いでしょう。それはあなたがより良いことはしません地元の 'set'したいです。あなたは 'distinct'で一意の停止をしたい場合。 – user7337271

関連する問題