Spark-Scala语言实战(16)

在之前的文章中,我们学习了三道任务,运用之前学到的方法。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢。

Spark-Scala语言实战(15)-CSDN博客文章浏览阅读1.5k次,点赞38次,收藏32次。今天开始的文章,我会带着大家来做三道任务,运用之前学到的方法,温故知新,举一反三,将知识紧紧掌握,cogroup两种方法。希望我的文章能帮助到大家,也欢迎大家来我的文章下交流讨论,共同进步。https://blog.csdn.net/qq_49513817/article/details/137658076之前的文章,我们都是在IDEA的非集群环境下进行的操作,但是,每一个学习spark的人都应该知道我们学习spark的目的都是为了最终能够完成分布式计算系统任务,它具有的大规模数据集上快速进行复杂分析和计算的能力让它在集群环境下保守欢迎。今天的文章,我会带着大家一起来到Linux集群环境下,学习我们的spark。

之前的文章中我们已经学习过如何搭建我们Linux中的spark集群环境,还不会的朋友可以查看这篇专栏。

大数据技术之Hadoop全生态组件学习与搭建icon-default.png?t=N7T8https://blog.csdn.net/qq_49513817/category_12599218.html

目录

一、知识回顾

二、外部文件读取并处理

启动集群 

文件读取


一、知识回顾

 在上一篇文章中,我们讲了三道任务题,分别是使用Spark完成单词去重,使用Spark统计133 136 139开头的总流量,完成统计相同字母组成的单词。

在单词去重中,我们主要使用了我们的distinct()方法进行去重操作

 在统计流量中,我们首先使用了之前使用过的键值对方法将手机号与流量进行匹配,在使用map方法与groupByKey方法切分手机号前三位并分组,最后使用sum求和得出总流量。

在统计单词中,我们显示切分了单词并进行排序,最后使用reduceByKey方法统计。

 现在,开始今天的学习吧~

二、外部文件读取并处理

启动集群 

 首先,我们肯定是要启动我们的集群环境。

systemctl stop firewalld.service
start-dfs.sh
start-yarn.shcd /opt/spark-3.2.1/sbin/./start-all.sh
  • systemctl stop firewalld.service的作用是关闭我们的防火墙,在进行绝大部分的集群操作时都需要用到它。
  • start-dfs.sh的作用是启动我们Hadoop的分布式文件系统(HDFS)
  • start-yarn.sh的作用是启动我们Hadoop的YARN组件
  • cd /opt/spark-3.2.1/sbin/是切换到我们的spark下的sbin目录
     ./start-all.sh是启动我们Spark集群的所有服务

然后,我们需要启动我们的spark

cd /opt/spark-3.2.1/
./bin/spark-shell

切换到我们的spark目录下,启动我们的spark

出现我们的spark图标与版本号,及成功。 

文件读取

我们有一个名为testcsv的csv文件,它里面存贮了一些数据,那我们该如何读取呢?

首先你要知道文件存储的路径,我这里的路径是spark中自己创建的目录,你们创建时记得不要和原有目录名称冲突。

在读取我们的文件之前,你需要知道在IDEA中编写我们的spark与在集群环境下编写我们的spark语法是有一些小差异的。IDEA用于编写和调试代码,而Linux和Spark则用于运行和管理分布式计算任务。它们之间的协作使得我们能够在IDEA中高效地开发Spark应用程序,并在Linux操作系统上的Spark集群中执行这些应用程序。

现在开始我们的任务:

val p = sc.textFile("/opt/spark-3.2.1/P/testcsv.csv")

  • val p = sc.textFile("/opt/spark-3.2.1/P/testcsv.csv"):读取我们的文件存贮到名为p的RDD中  
val pp = p.map{ line =>| val ppp = new CSVReader(new StringReader(line));| ppp.readNext();}

  • val pp = p.map{ line =>:使用map操作对RDD中的每一行文本进行处理。map是一个转换操作,它会对RDD中的每个元素应用一个函数,并返回一个新的RDD,其中包含了应用函数后的结果。
  • val ppp = new CSVReader(new StringReader(line)):对于RDD中的每一行line,创建一个新的CSVReader实例来读取该行。
  •  ppp.readNext():使用CSVReaderreadNext方法来读取并解析CSV行的下一部分
pp.collect

  •  pp.collect:收集RDD数据,以数组返回

可以看到我们文件中的数据成功输出,任务完成

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

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

相关文章

逆向案例二十五——m3u8中有AES加密怎么处理

网址链接:aHR0cHM6Ly93d3cuY2Jwb3J0YWwub3JnL2N1cGZveHBsYXkvODUyNzctMS0xLw 打开一个视频,打开开发者工具,刷新,搜索m3u8,找到这个含有所有ts连接的包 预览一下: 这与平常的m3u8有所不同,如果有下面的代码…

基于torch的图像识别训练策略与常用模块

数据预处理部分: 数据增强:torchvision中transforms模块自带功能,比较实用数据预处理:torchvision中transforms也帮我们实现好了,直接调用即可DataLoader模块直接读取batch数据 网络模块设置: 加载预训练…

【SQL】数据库SQL语句

1、主键 主键值唯一,不可修改,不能为空,删除不能重用 2、数据类型(常用) char int float date timestamp 3、select select * from data; select xx,xxx from data;//取部分行 select * from data limit 100; //限…

Bezier曲线的绘制 matlab

式中: 称为基函数。 。 因为n表示次数,点数为n1,显然i表示第i个控制点。 显然在Matlab中可以同矩阵的形式来计算C(u)。 关键代码为: clc clear % 假设控制点P取值为: P [4,7;13,12;19,4;25,12;30,3]; % 因此&a…

vscode debug 配置:launch.json

打开新项目左边的“运行和调试” 点击蓝色字体“创建 launch.json 文件” 选择上方“python” 选择“Python 文件 调试当前正在运行的Python文件” 配置launch.json文件内容: {// 使用 IntelliSense 了解相关属性// 悬停以查看现有属性的描述。// 欲了解更多信息&a…

设计模式-单一职责原则

基本介绍 对类来说的,即一个类应该只负责一项职责。如类A负责两个不同的职责,职责1,职责2.当职责1需求变更而改变A时,可能造成职责2执行错误,所以需要将类A的粒度分解为A1,A2 应用实例 方案1 public cl…

大厂MVP技术JAVA架构师培养

课程介绍 这是一个很强悍的架构师涨薪计划课程,课程由专家级MVP讲师进行教学,分为是一个章节进行分解式面试及讲解,不仅仅是面试,更像是一个专业的架构师研讨会课程。课程内容从数据结构与算法、Spring Framwork、JVM原理、 JUC并…

JS时间戳转换 时间戳转时间 js转换时间戳为时间类型显示

JS时间戳转换 时间戳转时间 js转换时间戳为时间类型显示 本方法已经抽离出年月日时分秒 更多的时间格式搭配大家可以随意添加!!! convertToEnglishMonthAbbreviation方法把月份转化成英文显示 大家可以看下 并非使用通过自定义枚举的方式实现…

opencv基础图行展示

"""试用opencv创建画布并显示矩形框(适用于目标检测图像可视化) """ # 创建一个黑色的画布,图像格式(BGR) img np.zeros((512, 512, 3), np.uint8)# 画一个矩形:给定左上角和右下角坐标&#xff0…

速成英语语法(2)

be动词 表示事物的性质和状态 ..是.. ..有.. I am Tom 我是汤姆 There are seven days in a week 一个星期有七天be动词的种类 am/is/are 我am 它/她/他is 你arebe的疑问句 含be的陈述句变为疑问句 主语和be对换位置 Are you ready? 你准备好了吗?be的否定否定句 b…

数据结构:去发现顺序表的魅力所在

✨✨小新课堂开课了,欢迎欢迎~✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:http://t.csdnimg.cn/oHJAK(数据结构与算法) 小新的主页:编程版小新-CSDN博客 …

Docker入门实战教程

文章目录 Docker引擎的安装Docker比vm虚拟机快 Docker常用命令帮助启动类命令镜像命令docker imagesdocker searchdocker pulldocker system dfdocker rmi 容器命令redis前台交互式启动redis后台守护式启动Nginx容器运行ubuntu交互式运行tomcat交互式运行对外暴露访问端口 Dock…

Linux的内存管理子系统

大家好,今天给大家介绍Linux的内存管理子系统,文章末尾附有分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!可进群免费领取。 Linux的内存管理子系统是Linux内核中一个非常重要且复杂的子系统&#…

防火墙操作!

当小编在Linux服务器上部署好程序以后,但是输入URL出现下述情况,原来是防火墙的原因!! 下面是一些防火墙操作! 为保证系统安全,服务器的防火墙不建议关闭!! 但是,我们可…

【网络安全】WebPack源码(前端源码)泄露 + jsmap文件还原

前言 webpack是一个JavaScript应用程序的静态资源打包器。它构建一个依赖关系图,其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个bundle。大部分Vue等项目应用会使用webpack进行打包,使用webpack打包应用程序会在网站js…

20240327-1-评测指标面试题

评测指标面试题 metric主要用来评测机器学习模型的好坏程度,不同的任务应该选择不同的评价指标,分类,回归和排序问题应该选择不同的评价函数. 不同的问题应该不同对待,即使都是分类问题也不应该唯评价函数论,不同问题不同分析. 回归(Regression) 平均绝对误差(MAE) 平均绝对…

CMake 学习笔记2

其他很好的总结 CMake教程系列-01-最小配置示例 - 知乎 CMake 保姆级教程(上) | 爱编程的大丙 10-补充(完结)_哔哩哔哩_bilibili 1、基本关键字 SET命令的补充 (1)SET命令设置执行标准 #增加-stdc11 set(CMAKE_CXX_STANDARD…

并查集的延伸--克鲁斯卡尔法求最小生成树MST

并查集的延伸--克鲁斯卡尔法求最小生成树MST 力扣 1135 力扣 1584并查集 UnionFind.java 力扣 1135 力扣 1584 package com.caoii;/**program:labu-pratice-study*package:com.caoii*author: Alan*Time: 2024/4/14 9:09*description: 最小生成树相关题目测试*/import org.jun…

Terminal 美化

摘自:Mac 系统终端美化与 ZSH 多设备配置同步共享 个人对 iTerm2 等第三方终端工具不太感冒,一直在用系统内置终端。 相比之下,系统自带的 Terminal 可谓是简陋啊。 安装了 Oh My Zsh,加上一些插件,感觉还行。 再调…

如何防止软件过度封装和抽象?

一、合适的软件架构 构建可读性强、高内聚、低耦合的软件架构是软件工程中的重要原则,这有助于提高代码的维护性、扩展性和复用性。以下是一些实践方法: 1. **模块化设计**:将系统划分为一系列职责单一、功能明确的模块或组件,每…