【大数据存储】实验七 Spark RDD

Spark RDD操作实验

一、实验目的

(1)掌握使用Spark访问本地文件和HDFS文件的方法

(2)熟练掌握在Spark Shell中对Spark RDD的操作方法

(3)掌握Spark应用程序的编写、编译打包和运行方法

二、.实验平台

(1)操作系统:Ubuntu 22.04

(2)Spark版本:3.3.4

(3)Hadoop版本:3.2.3

三、实验步骤(在spark-shell中完成)

1、读取Linux系统本地文件,并统计出文件的行数(.count())。

创建txt文件内容如下:

val t=sc.textFile("file:///home/prx17/Desktop/cat_group")

t.count()

  1. 读取HDFS系统文件,并统计出文件的行数。

将本地文件上传至hdfs

hdfs dfs -put /home/prx17/Desktop/cat_group /data

hdfs dfs -cat /data/cat_group

统计行数

val hdfsfile=sc.textFile("hdfs://localhost:9000/data/cat_group")

  1. 通过调用parallelize方法,用数组Array={1,2,3,4,5}创建RDD,并求出个各元素的乘积。

  1. 过滤出文件中所有包含“spark”的行,将结果打印出来。

创建txt文件内容如下:

  1. 假设有一个本地文件word.txt,里面包含了很多行文本,每行文本由多个单词构成,单词之间用空格分隔。对该文本进行词频统计。

6、将下面的成绩单,根据分数降序排序。    

Marry

78

John

82

Wang

90

Lee

69

Yang

85

  1. 给定一组键值对(”Marry”,78),(”John”,89),(”Mike”,92),(”Sam”,69),(”Rose”,77),键值对中的value表示分数,计算所有同学成绩的平均分。

8、删除人名重复的记录,只保留一条记录。    

Marry

78

John

82

Lee

69

Sam

93

Marry

78

Lin

66

Wang

90

Lee

69

Zhang

85

创建文件

创建rdd

去重方法一:

去重方法二:

变成键值对形式

val key=t.map(line=>(line.split(" ")(0).trim(),line.split(" ")(1).trim().toInt))

问题与解决方法:

1.解决启动spark时报出一堆INFO,进入spark的conf文件

进入log4j.properties文件,将其中的INFO修改为WARN

重启无大量INFO

  1. lines.distinct()去重方式操作并不会对lines进行行动​​​​​​​

只有把去重结果赋给一个变量才能保存去重结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/297851.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【无限列车1】SpringCloudAlibaba 与 SpringBoot后端架构的搭建

【无限列车1】SpringCloudAlibaba 与 SpringBoot后端架构的搭建 1、版本说明二、日志相关配置3、AOP 打印日志4、下载开源前端后台管理系统5、添加网关模块6、集成数据库和mp(1) 添加驱动和mp依赖(2) 数据库配置(3) 使用MybatisPlus 7、加密 yaml 文件中的内容(1) 依赖(2) 敏感…

ES6: class类

类 class 面相对象class关键字创建类关于类的继承 面相对象 一切皆对象。 举例: 操作浏览器要使用window对象;操作网页要使用document对象;操作控制台要使用console对象; ES6中增加了类的概念,其实ES5中已经可以实现类…

SpringBoot整合knife4J 3.0.3

Knife4j的前身是swagger-bootstrap-ui,前身swagger-bootstrap-ui是一个纯swagger-ui的ui皮肤项目。项目正式更名为knife4j,取名knife4j是希望她能像一把匕首一样小巧,轻量,并且功能强悍,更名也是希望把她做成一个为Swagger接口文档服务的通用性解决方案,不仅仅只是专注于前端Ui…

基于ArrayList实现简单洗牌

前言 在之前的那篇文章中,我们已经认识了顺序表—>http://t.csdnimg.cn/2I3fE 基于此,便好理解ArrayList和后面的洗牌游戏了。 什么是ArrayList? ArrayList底层是一段连续的空间,并且可以动态扩容,是一个动态类型的顺序表&…

第二十三章 Git

一、Git Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版…

YOLOv8 UI界面设计+热力图显示

进入可视化设计界面,设计UI pyside6-designer 设计好UI保存,然后通过以下命令将ui文件保存为py pyside6-uic myui.ui > myui.py 通过以下命令将资源文件qrc保存为py pyside6-rcc my_rc.qrc > my_rc.py 写主窗口函数实现功能... 项目基于yol…

【STL】vector的底层原理及其实现

vector的介绍 vector是一个可变的数组序列容器。 1.vector的底层实际上就是一个数组。因此vector也可以采用连续存储空间来存储元素。也可以直接用下标访问vector的元素。我们完全可以把它就当成一个自定义类型的数组使用。 2.除了可以直接用下标访问元素,vector还…

Redis缓存穿透和缓存雪崩

一、缓存穿透 1 什么是缓存穿透 缓存穿透说简单点就是大量请求的 key 根本不存在于缓存中,导致请求直接到了数据库上,根本没有经过缓存这一层。举个例子:某个黑客故意制造我们缓存中不存在的 key 发起大量请求,导致大量请求落到数…

Spoon Taking Problem(c++题解)

题目描述 �N 人が円卓に座っており,各人は反時計回りに順に 1, …, �1, …, N と番号付けられています.各人はそれぞれ左右どちらか一方の利き手を持っています. 円卓上には 1, …, �1, …, N と番号付け…

Golang Gin框架

1、这篇文章我们简要讨论一些Gin框架 主要是给大家一个基本概念 1、Gin主要是分为路由和中间件部分。 Gin底层使用的是net/http的逻辑,net/http主要是说,当来一个网络请求时,go func开启另一个协程去处理后续(类似epoll)。 然后主协程持续…

Vue 样式技巧总结与整理[中级局]

SFC(单文件组件)由 3 个不同的实体组成:模板、脚本和样式。三者都很重要,但后者往往被忽视,即使它可能变得复杂,且经常导致挫折和 bug。 更好的理解可以改善代码审查并减少调试时间。 这里有 7 个奇技淫巧…

VB 通过COM接口解析PSD文件

最近有PS测评的需求,故而想到了解析psd文件,目的就是为了获取文档信息和图层信息;获取PS的图像信息有很多方式,有过程性的,比如监听PS的各种操作事件;有结果性的,比如本文写的解析PSD文件。 0.…

【算法练习】28:选择排序学习笔记

一、选择排序的算法思想 弄懂选择排序算法,先得知道两个概念:未排序序列,已排序序列。 原理:以升序为例,选择排序算法的思想是,先将整个序列当做未排序的序列,以序列的第一个元素开始。然后从左…

libusb Qt使用记录

1.libusb 下载 ,选择编译好的二进制文件,libusb-1.0.26-binaries.7z libusb Activity 2. 解压 3. 在 Qt Widgets Application 或者 Qt Console Application 工程中导入库,Qt 使用的是 minggw 64编译器,所以选择libusb-MinGW-x64。…

Kubernetes(k8s):精通 Pod 操作的关键命令

Kubernetes(k8s):精通 Pod 操作的关键命令 1、查看 Pod 列表2、 查看 Pod 的详细信息3、创建 Pod4、删除 Pod5、获取 Pod 日志6、进入 Pod 执行命令7、暂停和启动 Pod8、改变 Pod 副本数量9、查看当前部署中使用的镜像版本10、滚动更新 Pod11…

保研线性代数复习3

一.基底(Basis) 1.什么是生成集(Generating Set)?什么是张成空间(Span)? 存在向量空间V(V,,*),和向量集(xi是所说的列向量&#xff…

集合/容器

集合概念 当我们保存一组一样(类型相同)的元素时候,我们应该使用一个容器来存储,就可以采用数组,但是数组存在以下缺点: 1、长度开始时必须指定,一旦指定就不能更改。 2、使用数组进行增加元素的步骤比较麻烦 这时候…

深入PostgreSQL中的pg_global表空间

pg_global表空间的位置 在PG当中,一个实例(cluster)初始化完以后,你会看到有下边两个与表空间相关的目录生成: $PGDATA/base $PGDATA/global 我们再用元命令\db以及相关视图看看相应的表空间信息: postgres# \db …

Golang | Leetcode Golang题解之第10题正则表达式匹配

题目&#xff1a; 题解&#xff1a; func isMatch(s string, p string) bool {m, n : len(s), len(p)matches : func(i, j int) bool {if i 0 {return false}if p[j-1] . {return true}return s[i-1] p[j-1]}f : make([][]bool, m 1)for i : 0; i < len(f); i {f[i] m…

重构智能防丢产品,苹果Find My技术引领市场发展

目前市场上最主要的防丢技术是蓝牙防丢和GPS防丢&#xff0c;蓝牙防丢是通过感应防丢器与绑定手机的距离来实现防丢的。一般防丢会默认设置一个最远安全距离&#xff0c;超过这个安全距离后&#xff0c;与手机蓝牙信号断开&#xff0c;触发防丢报警&#xff0c;用户根据防丢报警…