我想写一个PySpark代码片段,首先从云存储桶中读取一些文本文件形式的数据。文本文件包含由换行符分隔的文本段落,单词也使用空格字符分隔。
我需要计算给定文本文件中出现频率最高的10个单词。
import pyspark
from pyspark import SparkConf, SparkContext
from google.cloud import storage
import sys
conf = SparkConf().setMaster("local").setAppName("some paragraph")
sc = SparkContext(conf=conf)
bucket_name = (sys.argv[1])
destination_blob_name = (sys.argv[2])
storage_client = storage.Client()
bucket = storage_client.bucket(bucket_name)
blob = bucket.blob(destination_blob_name)
downloaded_blob = blob.download_as_string()
print(downloaded_blob)
print(blob)
def words():
alist = {}
for line in blob:
fields = line.split("|")
print(fields)
movies[int(fields[0])]=fields[1]
return movies
myline = words()
myRDD = sc.parallelize([myline])
print(myRDD.collect())
2条答案
按热度按时间2g32fytz1#
如果您有这样的文件:
你可以把前10个单词放入Python字典中,如下所示:
这只是假设你描述的单词用空格分隔的情况。在真实的世界中,你可能需要处理标点符号,删除标点符号后可能删除非单词等。这取决于你进一步调整算法。
bfrts1fy2#
如果要使用RDD转换,可以使用
collections.Counter()
创建频率,然后根据计数对其进行排序。下面是一个获取前3名示例
一个真实的世界的例子,其中3个段落由
\n
分隔,单词由``分隔。如果你想要所有的单词沿着它们的频率,你可以根据频率对单词进行排序,然后简单地收集