【spark】示例:连接操作
我们有这样两个文件
任务:找出用户评分平均值大于4的电影。
我们看两个文件结果,第一个文件有电影的ID和名字,第二个文件有电影的ID和所有用户的评分
对于任务结果所需要的数据为电影ID,电影名字,平均评分。平均评分用所有用户评分总和/用户数来求出
1.我们先计算电影的评分
(1)先读取电影评分文件
(2)取数据
我们看到每行的数据是通过::来进行连接的,然后我们需要的是第二列的电影ID以及第二列的评分。
我们把两个有用的数据取出来,组成键值对的形式。
为什么要组成键值对的形式?
数据中每个用户的对电影的评分都是分开的,所以我们需要对电影ID进行分组操作,把所有评分分组。
之前示例中我们知道groupByKey能进行分组,同时还能把所有相同Key的数据组合成一个集合。
当我们把所有数据集合之后就很容易操作计算了。
所以我们把数据组合成为<电影ID,评分>这样的键值对的形式。
3.分组计算平均评分
我们看到我们分组之后,所有相同电影的不同用户的评分都被收集到了一个集合中。
那么如何计算平均评分呢?评分总分 / 评分个数 = 平均评分
Scala集合提供了sum方法来可以计算集合总和,提供了size方法来计算数据条数。
正好不用我们额外去求了,如果集合没有定义方法,我们也可以遍历后计算得出要求的值。
2.在取电影ID和电影名
我们查看数据结构,数据是通过::连接的,对我们有用的数据为第一列电影ID和第二列电影名称
3.通过电影ID连接
我们把我们所有需要的数据都取出来了,接下来进行连接就可以了。
但是,我们连接需要把电影ID作为连接的key。
我们需要的结果为(ID,NAME,SCORE)
如果我们直接对id进行连接的话,我们连接出来的结果只有(NAME,SCORE)缺少了ID
所以我们需要再次对数据进行处理,我们通过.keyBy()方法新生成一个key,同时value为原始的数据
然后我们再进行连接操作,注意join连接操作是内链接,
连接后的key是连接键,value为所有相同key的集合,可以通过 _2._x 来进行访问
4.过滤求出平均评分大于4的记录
转载于:https://www.cnblogs.com/zzhangyuhang/p/9038689.html
【spark】示例:连接操作相关推荐
- Spark SQL JOIN操作代码示例
title: Spark SQL JOIN操作 date: 2021-05-08 15:53:21 tags: Spark 本文主要介绍 Spark SQL 的多表连接,需要预先准备测试数据.分别创建 ...
- 学习笔记Spark(七)—— Spark SQL应用(2)—— Spark DataFrame基础操作
二.Spark DataFrame基础操作 2.1.DataFrame DataFrame是一种不可变的分布式数据集,这种数据集被组织成指定的列,类似于关系数据库中的表. 数据集的每一列都带有名称和类 ...
- SQL 经典回顾:JOIN 表连接操作不完全指南
也许最强大的SQL功能是JOIN操作.这让所有非关系数据库羡慕不已,因为当你想"合并"两个数据集时,这个概念是如此简单,并且又普遍适用. 简单地说,连接两个表,就是将一个表中的每一 ...
- php框架 mysql拼接操作_PHP对数据库MySQL的连接操作
PHP对数据库MySQL的连接操作 PHP可以利用扩展.框架进行对数据库的CURD操作.当连接MySQL数据库服务器的时候,PHP中提供的用于MySQL的主要API有三种:mysql扩展.mysqli ...
- 连接mysql数据库字符串_MySQL数据库中怎么将字符串连接操作
MySQL数据库中怎么将字符串连接操作 发布时间:2020-11-30 09:54:14 来源:亿速云 阅读:68 作者:小新 小编给大家分享一下MySQL数据库中怎么将字符串连接操作,相信大部分人都 ...
- mysql odbc 数据库连接字符串_MySQL数据库:如何字符串连接操作?
不管你是做数据分析,还是网络爬虫.Web 开发.亦或是机器学习,你都离不开要和数据库打交道.数据库基本上是结构化数据的集合,通过数据库可以用各种方式轻松地检索,管理和访问数据.如今,像MySQL 这样 ...
- 一起学Hadoop——实现两张表之间的连接操作
---恢复内容开始--- 之前我们都是学习使用MapReduce处理一张表的数据(一个文件可视为一张表,hive和关系型数据库Mysql.Oracle等都是将数据存储在文件中).但是我们经常会遇到处理 ...
- python连数据库课程设计_python 连接操作 各类数据库
摘要: 用Python写脚本也有一段时间了,经常操作数据库(MySQL),现在就整理下对各类数据库的操作,如后面有新的参数会补进来,慢慢完善. 一,python 操作 MySQL:详情见:这里 mac ...
- 工程之星android版使用,安卓版工程之星软件网络1+1模式及网络cors连接操作详解...
原标题:安卓版工程之星软件网络1+1模式及网络cors连接操作详解 现在,越来越多用户开始使用安卓版工程之星进行作业,科力达技术工程师总结了安卓版工程之星网络1+1模式及网络CORS连接方式操作步骤, ...
最新文章
- 08常用的模板标签和过滤器
- SCI写作常用句式总结,帮你迅速提升paper档次
- tensorflow 读取cifar_浅入浅出TensorFlow 4 - 训练CIFAR数据
- 51单片机按键控制数码管0~9_51单片机外部中断
- Weblogic - Failed to bind remote object 错误解决方法
- 浏览器内核之WebKit 架构与模块
- NS2中数据包Packet的分析 (转帖)
- unable to locate package gparted
- C++ 模板实例化与调用
- Q129:PBRT-V3,均匀介质的采样(15.2.1章节)
- Mysql BLOB和TEXT类型
- 两张表合并加标识根据ID
- 机器学习教程 之 随机森林: 算法及其特征选择原理
- 用CSS动画制作一个正方体
- 附加支付和统筹支付_上海市医疗保险,请问账户支付和统筹支付是什...
- java毕业生设计运动会成绩管理系统计算机源码+系统+mysql+调试部署+lw
- Latex 的中文操作
- NYOJ 79 导弹拦截
- java lambdamart库,LambdaMART笔记
- 清空hive表 姿势大全
热门文章
- io口模拟串口 1602显示数据位内容[转]
- jvm垃圾回收之类加载机制
- 实用的无锁队列(二)
- python回溯方法的模板_实例讲解Python基于回溯法子集树模板实现图的遍历功能
- 安卓增删改查用sql语句号码_详解Android中一些SQLite的增删改查操作
- python django开发工具_Django+python 开发神器
- 【Spring】Spring Security OAuth2 JWT 认证
- 【kafka】kafka 建立很多很多消费组 会怎么样
- 60-10-060-命令-kafka-run-class.sh
- 【Linux】Linux查看机器负载-IO负载