2017-05-01 2 views
-1

タイプはpyspark.rdd.PipelinedRDDあり、そしてoriginのようなものが含まれています。私は、キーとキーでソートされたすべてのアナグラムをしたいpysparkにアナグラムを探す

[u'masquerade', 
u'squaremade', 
u'dianas', 
u'naiads', 
u'antagonist', 
u'stagnation', 
u'bates', 
u'beast', 
u'beats', 
u'thanks'] 

を:

[(u'aadeemqrsu', {u'masquerade', u'squaremade'}), 
(u'aadins', {u'dianas', u'naiads'}), 
(u'aaginnostt', {u'antagonist', u'stagnation'}), ... 
(u'abest', {u'bates', u'beast', u'beats'}), ...] 

私はそれを知っていますmapまたはreducebykeyの機能が必要な場合がありますが、どうすればいいか分かりません。

答えて

1

まずあなたはRDDを定義する必要があります。

origin = [u'masquerade', 
    u'squaremade', 
    u'dianas', 
    u'naiads', 
    u'antagonist', 
    u'stagnation', 
    u'bates', 
    u'beast', 
    u'beats', 
    u'thanks'] 

origin_rdd = sc.parallelize(origin) 

あなたが結果を参照するためにそれを印刷することができます。今すぐ

print origin_rdd.take(10) 

をキーと値のペアに変換します

origin_kv = origin_rdd.map(lambda word: ("".join(sorted([letter for letter in word])),[word])) 

還元を行う:

あなたはキーをソートすることも必要があり、あなたはすべてのデータ用のドライバに十分なスペースを持っている場合、あなたは結果を並べ替えることができます

print res.take(10) 

あなたは結果を印刷することができ

print sorted(res.take(10))