Skip to main content
 首页 » 编程设计

python之Spark之字数统计测试

2025年05月04日35jyk

我只想计算 spark (pyspark) 中的单词数,但我可以映射字母或整个字符串。

我试过: (整个字符串)

v1='Hi hi hi bye bye bye word count'  
v1_temp=sc.parallelize([v1])  
v1_map = v1_temp.flatMap(lambda x: x.split('\t')) 
v1_counts = v1_map.map(lambda x: (x, 1)) 
v1_counts.collect()   

或(只是字母)

v1='Hi hi hi bye bye bye word count' 
v1_temp=sc.parallelize(v1) 
v1_map = v1_temp.flatMap(lambda x: x.split('\t')) 
v1_counts = v1_map.map(lambda x: (x, 1)) 
v1_counts.collect() 

请您参考如下方法:

当您执行 sc.parallelize(sequence) 时,您正在创建一个将并行操作的 RDD。在第一种情况下,您的序列是一个包含单个元素(整个句子)的列表。在第二种情况下,您的序列是一个字符串,在 Python 中类似于字符列表。

如果你想并行计算单词数,你可以这样做:

from operator import add 
 
s = 'Hi hi hi bye bye bye word count'  
seq = s.split()   # ['Hi', 'hi', 'hi', 'bye', 'bye', 'bye', 'word', 'count'] 
sc.parallelize(seq)\ 
  .map(lambda word: (word, 1))\ 
  .reduceByKey(add)\ 
  .collect() 

会让你:

[('count', 1), ('word', 1), ('bye', 3), ('hi', 2), ('Hi', 1)]