- 学习:知识的初次邂逅
- 复习:知识的温故知新
- 练习:知识的实践应用
目录
一,需求
本文案例的资源,可直接下载
https://download.csdn.net/download/qq_55006020/89864064?spm=1001.2014.3001.5501
案例要求: 要求:统计出title中 热门词频Top10
有这么有一份数据文件 46.2MB
打开之后:
要求:统计出title中 热门词频Top10
实现技术栈:
实现这道题的需求,可以用的工具选择有很多,用sql,用hive,用pandas等都可以实现;
这里用spark中的RDD算子分析;
二,思路
- 第一步:导入数据
- 第二步:把数据转为字典
- 第三步:根据字典键取值,拿到title
- 第四步:使用jieba分词,过滤掉形容词,保留名词
- 第五步:多维列表拉平至一维列表;
- 第六步:过滤单词长度小于1的;
- 第七步:单词计数,转为kv结构,给每个单词后面计数为1
- 第八步:reduce规约,统计单词次数
- 第九步:排序,以单词出现的次数降序排序
- 第十步:输出前Top10的单词以及出现的次数
完整代码
# encoding=utf-8
import json
from pyspark import SparkContext
import jieba.posseg as pseg
sc = SparkContext()
#第一步,导入数据
rdd = sc.textFile('hdfs://node1:8020/baike_qa_valid.json')
# print(rdd.take(10))
#第二步,转json为字典
rdd_dict = rdd.map(lambda x:json.loads(x))
# print(rdd_dict.take(10))
#第三步,遍