大数据入门到精通7--对复合value做reducebykey
培训系列7--对复合value做reduce
1.做基础数据准备
val collegesRdd= sc.textFile("/user/hdfs/CollegeNavigator.csv")
val header= collegesRdd.first
val headerlessRdd= collegesRdd.filter( line=>{ line!= header } )
2.做map数据
val typeMapCount= headerlessRdd.map(line=>{
val strtype=line.split("\",\"")(3) \\取类型字段
val strCount=line.split("\",\"")(7)
val stuCount=if (strCount.length()>0) strCount.toLong
else 0
\\以上是获取第7个字段,如果不为空的话取实际数据,如果为空取0
val strUnderCount=line.split("\",\"")(8)
val underCount=if (strUnderCount.length()>0) strUnderCount.toLong
else 0
\\以上是获取第8个字段,如果不为空的话取实际数据,如果为空取0
(strtype,(stuCount,underCount)
})
3.做reducebykey 对符合value操作
val typeReduceCount=typeMapCount.reduceByKey((sum,current)=>{
((sum._1+current._1),(sum._2+current._2))
})
对reduce by key 的操作的时候,不操作key,所以符合value,只需要一层就可以取得值,不需要实际嵌套两层,sum._2._1 反而是错误的。
因为是符合key,所以reducebykey的结果也是用括号括住的。
大数据入门到精通7--对复合value做reducebykey的更多相关文章
- 大数据入门到精通8-spark RDD 复合key 和复合value 的map reduce操作
一.做基础数据准备 这次使用fights得数据. scala> val flights= sc.textFile("/user/hdfs/data/Flights/flights.cs ...
- 大数据入门到精通2--spark rdd 获得数据的三种方法
通过hdfs或者spark用户登录操作系统,执行spark-shell spark-shell 也可以带参数,这样就覆盖了默认得参数 spark-shell --master yarn --num-e ...
- 大数据入门到精通19--mysql 数据导入到hive数据中
一.正常按照数据库和表导入 \\前面介绍了通过底层文件得形式导入到hive的表中,或者直接导入到hdfs中,\\现在介绍通过hive的database和table命令来从上层操作.sqoop impo ...
- 大数据入门到精通18--sqoop 导入关系库到hdfs中和hive表中
一,选择数据库,这里使用标准mysql sakila数据库 mysql -u root -D sakila -p 二.首先尝试把表中的数据导入到hdfs文件中,这样后续就可以使用spark来dataf ...
- 大数据入门到精通16--hive 的条件语句和聚合函数
一.条件表达 case when ... then when .... then ... when ... then ...end select film_id,rpad(title,20," ...
- 大数据入门到精通13--为后续和MySQL数据库准备
We will be using the sakila database extensively inside the rest of the course and it would be great ...
- 大数据入门到精通12--spark dataframe 注册成hive 的临时表
一.获得最初的数据并形成dataframe val ny= sc.textFile("data/new_york/")val header=ny.firstval filterNY ...
- 大数据入门到精通11-spark dataframe 基础操作
// dataframe is the topic 一.获得基础数据.先通过rdd的方式获得数据 val ny= sc.textFile("data/new_york/")val ...
- 大数据入门到精通10--spark rdd groupbykey的使用
//groupbykey 一.准备数据val flights=sc.textFile("data/Flights/flights.csv")val sampleFlights=sc ...
随机推荐
- django中向用户发送邮件信息
发送邮件来让用户激活,因此,邮件中需要包含用户信息.但用户信息需要加密才可以.因此加密采用的是itsdangerous中的TimedJSONWebSignatureSerializer. 参考链接:h ...
- ubuntu16.04x下搜狗输入法无法输入中文
使用如下命令: cd ~/,config find . -name sogou* 找到sogou-qimpanel ,sudo rm -r ./sogou-qimpanel删除 find . -nam ...
- 基于tensorflow的简单线性回归模型
#!/usr/local/bin/python3 ##ljj [1] ##linear regression model import tensorflow as tf import matplotl ...
- Java单列模式
设计模式 单列模式的定义和作用 目的:使得类的一个对象成为该类系统中的唯一实列: 定义:一个类有且仅有一个实例,并且自行实列化向整个系统提供?: 单列模式分为 恶汉式 (在创建对象的时候就直接初始化 ...
- SpringBoot配置(1) 配置文件application&yml
SpringBoot配置(1) 配置文件application&yml 一.配置文件 1.1 配置文件 SpringBoot使用一个全局的配置文件,配置文件名是固定的. application ...
- 20175311 2018-2019-2 《Java程序设计》第1周学习总结
教材学习内容总结 第一周我们主要尝试了怎么安装各种以后可能需要用到的软件,根据老师提供的博客教程进行自主学习安装软件,然后编写一些简单的语言程序. 教材学习中的问题和解决过程 问题1:在学习过程中主要 ...
- python之路——8
王二学习python的笔记以及记录,如有雷同,那也没事,欢迎交流,wx:wyb199594 学习内容 .1.文件操作 笔记.txt 1.文件路径:D:\python\Day8\笔记.txt 2.编码方 ...
- [UE4]CheckBox
一.CheckBox默认情况下是比较小的 二.要让CheckBox变大,最简单的方法就是直接设置Transform.Scale,但如此一来CheckBox就变得模糊了. 三.CheckBox控件是在C ...
- vue route
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- MDI容器
MDI容器 具体步骤如下: private void 销售ToolStripMenuItem_Click(object sender, EventArgs e) { VisibledForm(); F ...