在pyspark找到字谜

时间:2017-05-01 00:05:44

标签: python mapreduce pyspark

变量pyspark.rdd.PipelinedRDD的类型为origin[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

我知道它可能需要reducebykeyimport javax.swing.*; import java.awt.event.*; public class Editor extends CenteredFrame{ private static final long serialVersionUID = 2549009292395922530L; public Editor(String title){ super(); } JMenuBar menuBar = new JMenuBar(); //add a menu cut JMenu cut = new JMenu("Edit"); cut.addMenuListener(this); } 功能,但我真的不知道该怎么做。

1 个答案:

答案 0 :(得分: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]))

做reduce:

res = origin_kv.reduceByKey(lambda word1,word2: word1 + word2)

您可以打印结果:

print res.take(10)

如果您还需要要排序的键,并且驱动程序中有足够的空间用于所有数据,您可以对结果进行排序:

print sorted(res.take(10))