一、词频统计

1.读文本文件生成RDD lines

2.将一行一行的文本分割成单词 words flatmap()

3.全部转换为小写 lower()

4.去掉长度小于3的单词 filter()

5.去掉停用词

6.转换成键值对 map()

7.统计词频 reduceByKey()

8.按字母顺序排序 sortBy(f)

9.按词频排序 sortByKey()

10.结果文件保存 saveAsTextFile(out_url)

words.saveAsTextFile("file:///home/hadoop/out.txt")

11.词频结果可视化charts.WordCloud()

#11.词频结果可视化charts.WordCloud()
from pyecharts.charts import WordCloud
url='D:/1342-0.txt'
with open(r'D:/stopwords.txt') as f:
stops=f.read().split()
wc=sc.textFile(url).flatMap(lambda line:line.lower().replace(',','').split()).filter(lambda word:word not in stops).filter(lambda word:len(word)>2).map(lambda word:(word,1)).reduceByKey(lambda a,b:a+b).sortBy(lambda x:x[1],False).take(100) mywordcloud=WordCloud()
mywordcloud.add("",wc,shape='circle')
mywordcloud.render()

二、学生课程分数案例

lines = sc.textFile('file:///home/hadoop/chapter4-data01.txt')
lines.take(5)

1.总共有多少学生?map(), distinct(), count()

lines.map(lambda line : line.split(',')[0]).distinct().count()

2.开设了多少门课程?

lines.map(lambda line : line.split(',')[1]).distinct().count()

3.每个学生选修了多少门课?map(), countByKey()

lines.map(lambda line : line.split(',')).map(lambda line:(line[0],(line[1],line[2]))).countByKey()

4.每门课程有多少个学生选?map(), countByValue()

lines.map(lambda line : line.split(',')).map(lambda line : (line[1])).countByValue()

5.Les选修了几门课?每门课多少分?filter(), map() RDD

lines.filter(lambda line:"Les" in line).map(lambda line:line.split(',')).collect()

6.Les选修了几门课?每门课多少分?map(),lookup()  list

lines.map(lambda line:line.split(',')).map(lambda line:(line[0],line[1])).lookup("Les")
lines.map(lambda line:line.split(',')).map(lambda line:(line[0],line[2])).lookup("Les")

7.Les的成绩按分数大小排序。filter(), map(), sortBy()

lines.filter(lambda line:"Les" in line).map(lambda line:line.split(',')).sortBy(lambda line:(line[2])).collect()

8.Les的平均分。map(),lookup(),mean()

import numpy as np
meanlist=lines.map(lambda line:line.split(',')).map(lambda line:(line[0],line[2])).lookup("Les")
np.mean([int(x) for x in meanlist])

9.生成(课程,分数)RDD,观察keys(),values()

lines = sc.textFile('file:///home/hadoop/chapter4-data01.txt')
words = lines.map(lambda line:line.split(',')).map(lambda line:(line[1],line[2]))
words.keys().take(5)
words.values().take(5)

10.每个分数+5分。mapValues(func)

words.mapValues(lambda x:int(x)+5).foreach(print)

11.求每门课的选修人数及所有人的总分。combineByKey()

course = words.combineByKey(lambda v:(int(v),1),lambda c,v:(c[0]+int(v),c[1]+1),lambda c1,c2:(c1[0]+c2[0],c1[1]+c2[1]))

12.求每门课的选修人数及平均分,精确到2位小数。map(),round()

course.map(lambda x:(x[0],x[1][1],round(x[1][0]/x[1][1],2))).collect()

13.求每门课的选修人数及平均分。用reduceByKey()实现,并比较与combineByKey()的异同。

lines.map(lambda line:line.split(',')).map(lambda x:(x[1],(int(x[2]),1))).reduceByKey(lambda a,b:(a[0]+b[0],a[1]+b[1])).foreach(print)

14.结果可视化。charts,Bar()

from pyecharts.charts import Bar
from pyecharts import options as opts bar = Bar()
bar.add_xaxis(cs.keys().collect())
bar.add_yaxis('avg',cs.map(lambda x:x[2]).collect())
#bar.set_global_opts(title_opts=opts.TitleOpts(title="各课程",subtitle="平均分"),xaxis_opts=opts.AxisOpts(axislabel_opt=opts.LabelOpts(rotate=30)))
bar.set_global_opts() bar.render_notebook()

X轴设置斜体的方法忘记了不会写

RDD编程的更多相关文章

  1. Spark菜鸟学习营Day3 RDD编程进阶

    Spark菜鸟学习营Day3 RDD编程进阶 RDD代码简化 对于昨天练习的代码,我们可以从几个方面来简化: 使用fluent风格写法,可以减少对于中间变量的定义. 使用lambda表示式来替换对象写 ...

  2. Spark菜鸟学习营Day1 从Java到RDD编程

    Spark菜鸟学习营Day1 从Java到RDD编程 菜鸟训练营主要的目标是帮助大家从零开始,初步掌握Spark程序的开发. Spark的编程模型是一步一步发展过来的,今天主要带大家走一下这段路,让我 ...

  3. Spark学习笔记2:RDD编程

    通过一个简单的单词计数的例子来开始介绍RDD编程. import org.apache.spark.{SparkConf, SparkContext} object word { def main(a ...

  4. Spark编程模型(RDD编程模型)

    Spark编程模型(RDD编程模型) 下图给出了rdd 编程模型,并将下例中用 到的四个算子映射到四种算子类型.spark 程序工作在两个空间中:spark rdd空间和 scala原生数据空间.在原 ...

  5. 02、体验Spark shell下RDD编程

    02.体验Spark shell下RDD编程 1.Spark RDD介绍 RDD是Resilient Distributed Dataset,中文翻译是弹性分布式数据集.该类是Spark是核心类成员之 ...

  6. Spark学习之RDD编程(2)

    Spark学习之RDD编程(2) 1. Spark中的RDD是一个不可变的分布式对象集合. 2. 在Spark中数据的操作不外乎创建RDD.转化已有的RDD以及调用RDD操作进行求值. 3. 创建RD ...

  7. 5.1 RDD编程

    一.RDD编程基础 1.创建 spark采用textFile()方法来从文件系统中加载数据创建RDD,该方法把文件的URL作为参数,这个URL可以是: 本地文件系统的地址 分布式文件系统HDFS的地址 ...

  8. 2. RDD编程

    2.1 编程模型 在Spark中,RDD被表示为对象,通过对象上的方法调用来对RDD进行转换.经过一系列的transformations定义RDD之后,就可以调用actions触发RDD的计算,act ...

  9. spark实验(四)--RDD编程(1)

    一.实验目的 (1)熟悉 Spark 的 RDD 基本操作及键值对操作: (2)熟悉使用 RDD 编程解决实际具体问题的方法. 二.实验平台 操作系统:centos6.4 Spark 版本:1.5.0 ...

  10. 第2章 RDD编程(2.3)

    第2章 RDD编程(2.3) 2.3 TransFormation 基本RDD Pair类型RDD (伪集合操作  交.并.补.笛卡尔积都支持) 2.3.1 map(func) 返回一个新的RDD,该 ...

随机推荐

  1. idea启动项目,报java.lang.OutOfMemoryError: PermGen space 和启动项目很慢的问题解决

    启动一个老的项目,报错,查是内存溢出 进入 VM options 加上   -Xms256m -Xmx256m -XX:MaxNewSize=256m -XX:MaxPermSize=256m   在 ...

  2. Amd,Cmd, Commonjs, ES6 import/export的异同点

    Amd,Cmd, Commonjs, ES6 import/export等均是模块化方案 1.Commonjs使用在Nodejs上,加载模块是同步的. 2.Amd是requirejs在推广过程中对模块 ...

  3. jupyter notebook 切换环境

    jupyter-notebook 中切换 conda 虚拟环境 介绍 ​ jupyter notebook是anaconda中root目录中默认的python环境,如果要使拥创建的其他环境,则需要安装 ...

  4. python 安装redis,rediscluster

    首先看下pip版本,过低版本会出问题 [root@test rpm]# pip -V pip 20.3.4 from /usr/lib/python2.7/site-packages/pip (pyt ...

  5. 《Makefile中传递宏定义到源文件》

    Makefile中定义的变量无法直接传递到头文件中,因为头文件是在预编译阶段处理的,而Makefile中的变量是在编译阶段处理的. 如果需要在头文件中使用Makefile中定义的变量,可以在头文件中使 ...

  6. class_schedule

    #!/usr/bin/python # -*- coding: UTF-8 -*- class Schedule(object):          def __init__(self, name=& ...

  7. 在axios拦截器js文件中无法使用vue-router问题

    如果在axios设置拦截器的js文件或者说在vue-router路由配置文件,配置好的路由文件以外的js文件中使用 import {useRouter} from 'vue-router' 系统不会默 ...

  8. Excel比较两列是否相等

    通常的方式: 先将两列排序 通过判定如 =A1=B1 或者ctrl + \ (mac 是 command) 可以定位到差异的那行

  9. GrADS CTL文件 VARS字段

    GrADS可以读取GRIB格式的再分析数据,如ERA5,CFSR,CRA40等.对于这些数据,借助grib2ctl/g2ctl程序,生成描述文件(*.ctl文件),再通过gribmap命令,生成索引文 ...

  10. PMP项目启动会与开工会议

    转载https://www.cnblogs.com/yanpeng1991/p/11391805.html 项目启动会(project initiating meeting)与项目开工会(kick-o ...