我们有这样两个文件

任务:找出用户评分平均值大于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】示例:连接操作相关推荐

  1. Spark SQL JOIN操作代码示例

    title: Spark SQL JOIN操作 date: 2021-05-08 15:53:21 tags: Spark 本文主要介绍 Spark SQL 的多表连接,需要预先准备测试数据.分别创建 ...

  2. 学习笔记Spark(七)—— Spark SQL应用(2)—— Spark DataFrame基础操作

    二.Spark DataFrame基础操作 2.1.DataFrame DataFrame是一种不可变的分布式数据集,这种数据集被组织成指定的列,类似于关系数据库中的表. 数据集的每一列都带有名称和类 ...

  3. SQL 经典回顾:JOIN 表连接操作不完全指南

    也许最强大的SQL功能是JOIN操作.这让所有非关系数据库羡慕不已,因为当你想"合并"两个数据集时,这个概念是如此简单,并且又普遍适用. 简单地说,连接两个表,就是将一个表中的每一 ...

  4. php框架 mysql拼接操作_PHP对数据库MySQL的连接操作

    PHP对数据库MySQL的连接操作 PHP可以利用扩展.框架进行对数据库的CURD操作.当连接MySQL数据库服务器的时候,PHP中提供的用于MySQL的主要API有三种:mysql扩展.mysqli ...

  5. 连接mysql数据库字符串_MySQL数据库中怎么将字符串连接操作

    MySQL数据库中怎么将字符串连接操作 发布时间:2020-11-30 09:54:14 来源:亿速云 阅读:68 作者:小新 小编给大家分享一下MySQL数据库中怎么将字符串连接操作,相信大部分人都 ...

  6. mysql odbc 数据库连接字符串_MySQL数据库:如何字符串连接操作?

    不管你是做数据分析,还是网络爬虫.Web 开发.亦或是机器学习,你都离不开要和数据库打交道.数据库基本上是结构化数据的集合,通过数据库可以用各种方式轻松地检索,管理和访问数据.如今,像MySQL 这样 ...

  7. 一起学Hadoop——实现两张表之间的连接操作

    ---恢复内容开始--- 之前我们都是学习使用MapReduce处理一张表的数据(一个文件可视为一张表,hive和关系型数据库Mysql.Oracle等都是将数据存储在文件中).但是我们经常会遇到处理 ...

  8. python连数据库课程设计_python 连接操作 各类数据库

    摘要: 用Python写脚本也有一段时间了,经常操作数据库(MySQL),现在就整理下对各类数据库的操作,如后面有新的参数会补进来,慢慢完善. 一,python 操作 MySQL:详情见:这里 mac ...

  9. 工程之星android版使用,安卓版工程之星软件网络1+1模式及网络cors连接操作详解...

    原标题:安卓版工程之星软件网络1+1模式及网络cors连接操作详解 现在,越来越多用户开始使用安卓版工程之星进行作业,科力达技术工程师总结了安卓版工程之星网络1+1模式及网络CORS连接方式操作步骤, ...

最新文章

  1. 08常用的模板标签和过滤器
  2. SCI写作常用句式总结,帮你迅速提升paper档次
  3. tensorflow 读取cifar_浅入浅出TensorFlow 4 - 训练CIFAR数据
  4. 51单片机按键控制数码管0~9_51单片机外部中断
  5. Weblogic - Failed to bind remote object 错误解决方法
  6. 浏览器内核之WebKit 架构与模块
  7. NS2中数据包Packet的分析 (转帖)
  8. unable to locate package gparted
  9. C++ 模板实例化与调用
  10. Q129:PBRT-V3,均匀介质的采样(15.2.1章节)
  11. Mysql BLOB和TEXT类型
  12. 两张表合并加标识根据ID
  13. 机器学习教程 之 随机森林: 算法及其特征选择原理
  14. 用CSS动画制作一个正方体
  15. 附加支付和统筹支付_上海市医疗保险,请问账户支付和统筹支付是什...
  16. java毕业生设计运动会成绩管理系统计算机源码+系统+mysql+调试部署+lw
  17. Latex 的中文操作
  18. NYOJ 79 导弹拦截
  19. java lambdamart库,LambdaMART笔记
  20. 清空hive表 姿势大全

热门文章

  1. io口模拟串口 1602显示数据位内容[转]
  2. jvm垃圾回收之类加载机制
  3. 实用的无锁队列(二)
  4. python回溯方法的模板_实例讲解Python基于回溯法子集树模板实现图的遍历功能
  5. 安卓增删改查用sql语句号码_详解Android中一些SQLite的增删改查操作
  6. python django开发工具_Django+python 开发神器
  7. 【Spring】Spring Security OAuth2 JWT 认证
  8. 【kafka】kafka 建立很多很多消费组 会怎么样
  9. 60-10-060-命令-kafka-run-class.sh
  10. 【Linux】Linux查看机器负载-IO负载