如何使用Python在RDD上找到bigram频率

时间:2016-02-07 23:40:36

标签: python apache-spark pyspark rdd bigdata

text_file = sc.textFile("/Users/xxx/Desktop/BigData/assign1/abc")
count1 = text_file.flatMap(lambda line: line.split(" ")) 
             .map(lambda x : (x,  1)) \
         .reduceByKey(lambda a, b: a + b)

我只是以此为例。我有一个156215条目的巨大数据集

['这','是','我的','房间'] 这让我回到单字数。

如果我需要一次找到两个单词的数量。

['这是','是我','我的房间']

我已尝试过所有内容,但它返回TypeError:PipelinedRDD问题。

1 个答案:

答案 0 :(得分:1)

请注意,这仍然按行操作;所以,如果您的文件看起来像

this is a test
what happens next

然后test what不计算在内。

def word_pairs(line):
    words = line.split()
    return [a + " " + b for a,b in zip(words, words[1:])]

pairs = text_file.flatMap(word_pairs)
count = pairs.map(lambda x: (x, 1)).reduceByKey(lambda a, b: a + b)