- 博客(61)
- 收藏
- 关注
原创 自定义分区器-基础
这就类似于 Spark 中的分区,每个分区的数据可以在不同的计算节点上同时进行处理,从而加快整个数据处理的速度。例如,若一个 RDD 有 10 个分区,且集群有足够的计算资源,Spark 就可以同时处理这 10 个分区的数据。在 Spark 中,分区是指将数据集按照一定的规则划分成多个较小的子集,每个子集可以独立地在不同的计算节点上进行处理,这样可以实现数据的并行处理,提高计算效率。在 Spark 里,弹性分布式数据集(RDD)是核心的数据抽象,它是不可变的、可分区的、里面的元素并行计算的集合。
2025-05-14 08:17:59
417
原创 spark——shell中写代码
/ 将元组的value按照key来分组,对所有的value执行聚合操作(相加)// 将单词转换为元组对象,key是单词,value是数字1。// 将单词进行切割,得到一个存储全部单词的RDD。// 收集RDD的数据并打印输出结果。// 读取文件,得到RDD。
2025-05-09 15:05:15
280
原创 RDD的五大特征
RDD的每次转换都会生成一个新的RDD,所以RDD之间就会形成类似于流水线一样的前后依赖关系。在部分分区数据丢失时,Spark可以通过这个依赖关系重新计算丢失的分区数据,而不是对RDD的所有分区进行重新计算。RDD的分区是RDD数据存储的最小单位。如下图示,假如1个RDD有3个分区,RDD内存储了123456,那么数据本质上分散在三个分区内进行存储。举个生活中的例子:高考的时候,每个班的同学都打散到不同的考场,此时的高3(8)班就是一个抽象的概念,在实际中,这个班级的学生可能分布在5个不同的考场。
2025-05-09 15:04:24
215
原创 在Idea中编写Spark程序并运行(二)
复制之前的文件,重命名为WordCount_online,并修改两个地方:输入目录改成args(0), 输出的目录改成args(1)。// 写一个spark程序,统计input目录下所有文本文件中单词的词频。完成修改之后,要刷新maven,以下载相关的插件。// 将所有分区的数据合并成一个分区。// 停止 SparkContext。// 配置 Spark 应用程序。打包上线之后,我们的代码也要提前改下。// 读取目录下的所有文本文件。// 把结果保存在output下。// 保存结果到文件。
2025-05-09 15:03:37
402
原创 在Idea中编写Spark程序并运行
(1)访问Scala官方网站(https://www.scala-lang.org/download/)下载适合操 作系统的Scala安装包。(2) 打开命令提示符(CMD),输入以下命令:scala -version 如果显示Scala 的版本信息,说明安装成功。它的功能是wordcount的功能:从指定的文件夹中去读取文件,并做词频统计。IDEA中,默认是不支持编写Scala的,需要额外配置一个插件。使用Maven创建项目,并在pom.xml文件中配置相关的依赖。// 读取目录下的所有文本文件。
2025-05-09 15:03:01
340
原创 Spark基础介绍
例如,在机器学习和图计算等需要多次迭代的算法中,Spark 可以显著减少计算时间。Hadoop:Hadoop MapReduce 基于磁盘进行数据处理,数据在 Map 和 Reduce 阶段会频繁地写入磁盘和读取磁盘,这使得数据处理速度相对较慢,尤其是在处理迭代式算法和交互式查询时,性能会受到较大影响。Hadoop:Hadoop 的 MapReduce 编程模型相对较为底层和复杂,开发人员需要编写大量的代码来实现数据处理逻辑,尤其是在处理复杂的数据转换和多阶段计算时,代码量会非常庞大,开发和维护成本较高。
2025-05-09 15:02:06
177
原创 spark数据压缩
即使你的MapReduce的输入输出文件都是未压缩的文件,你仍然可以对Map任务的中间结果输出做压缩,因为它要写在硬盘并且通过网络传输到Reduce节点,对其压缩可以提高很多性能,这些工作只要设置两个属性即可,我们来看下代码怎么设置。mapreduce.map.output.compress.codec(在mapred-site.xml中配置)压缩方式选择时重点考虑:压缩/解压缩速度、压缩率(压缩后存储大小)、压缩后是否可以支持切片。1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器。
2025-05-09 15:01:30
338
原创 克隆虚拟机组成集群
在随后的设置中,请注意两点:(1)要给其他两台虚拟机取不同的名字。要注意,这里是虚拟机的名称,而不是它的hostname。(2)要将这两台克隆出来的虚拟机和hadoop100保存在同一个磁盘目录下,方便我们统一管理。克隆之后,我们得到了hadoop101,hadoop102,由于它们是从hadoop100直接扣克隆过来的,所以目前他们的ip和hostname都是很hadoop100是一样的,这里就需要修改下。vm软件提供了克隆的功能,它可以允许我们从一台虚拟机上快速克隆出其他的一模一样的主机。
2025-05-09 15:00:01
152
原创 Spark处理过程-转换算子和行动算子
它的核心作用是对具有相同键的所有值进行聚合操作,通过用户提供的聚合函数将这些值合并成一个结果,从而实现数据的归约和统计。作用:对 RDD 中的每个元素应用给定的函数 f,将每个元素转换为另一个元素,最终返回一个新的 RDD。作用:筛选出 RDD 中满足函数 f 条件(即 f 函数返回 true)的元素,返回一个新的 RDD,新 RDD 中的元素类型与原 RDD 相同。作用:对 RDD 中的每个元素应用函数 f,函数 f 返回一个可遍历的集合,然后将这些集合中的元素扁平化合并成一个新的 RDD。
2025-05-09 14:57:34
385
原创 RDD中算子的基本介绍
例如,rdd1 = sc.parallelize([(1, "a"), (2, "b")])和rdd2 = sc.parallelize([(1, "x"), (2, "y")]),rdd1.join(rdd2)会生成一个新的RDD,包含[(1, ("a", "x")), (2, ("b", "y"))]。例如,rdd.filter(lambda x: x > 2),它会生成一个新的RDD,只包含原始RDD中大于2的元素。例如,rdd.count()会返回一个整数,表示RDD中元素的数量。
2025-05-09 14:54:50
375
原创 hadoop配置集群-rsync命令同步文件夹
在opt文件夹里面新建conf文件夹,然后——————在hadoop100里面输入:touch 1.txt 2.txt 3.txt 4.txt 新建四个文件。在hadoop100里面输入代码:rsync -av conf/ root@hadoop101:/opt/conf/如果找不到rsync命令。如果要在hadoop100里面的opt新建新的文件,就要在控制台重新输入rsync命令。然后在hadoop101里面的opt文件夹下面的conf文件夹里面刷新就可以。下载之后就可以输入rsync命令。
2025-05-07 08:28:41
187
原创 环境变量1
环境变量:环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数(变量),如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们所链接的动态静态库(后面学)在哪里,但是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找。环境变量:上面已经介绍过环境变量的概念,也介绍了查看系统环境变量的方法,其在系统中的展示方法通常为,环境变量=值:值…通常环境变量都会存储相应的值,比如:PATH环境变量存储的是常用指令的路径,方便系统快速找到对应命令的路径,从而执行对应命令。
2025-05-07 08:27:47
249
原创 HDFS客户端操作
Maven 可以帮助你管理这些依赖项,你只需在项目的 `pom.xml` 文件中声明所需的依赖,Maven 就会自动从远程仓库下载这些依赖项,并将其添加到项目的类路径中。POM 是 Maven 的核心概念之一,它是一个 XML 文件(通常命名为 `pom.xml`),用于描述项目的配置信息和依赖关系。3. 配置日志信息。System.out.println("根目录下的文件和目录信息:");
2025-05-07 08:26:55
308
原创 Mapreduce初使用
比如其中一台机器挂了,它可以把上面的计算任务转移到另外一个节点上运行,不至于这个任务运行失败,而且这个过程不需要人工参与,而完全是由Hadoop内部完成的。在这种情况下,MapReduce并不是不能做,而是使用后,每个MapReduce作业的输出结果都会写入到磁盘,会造成大量的磁盘IO,导致性能非常的低下。流式计算的输入数据是动态的,会一条一条的过来,是动态产生的,而MapReduce的输入数据集是静态的,不能动态变化。当你的计算资源不能得到满足的时候,你可以通过简单的增加机器来扩展它的计算能力。
2025-05-07 08:25:58
453
原创 Mapreduce的使用
/对每一个单词,把它当做key,并设置value为1。//每一行的文本内容,使用空格做拆分,得到一个列表。//2.关联啊本地Driver类的jar。//6.设置输入数据和输出结果的地址。//3.关联map和reduce。//4.设置map的输出kv类型。//5.设置map的输出kv类型。//对value中的值做累加求和。//1.获取job对象。//1.继承 hadoop的map重写。//继承hadoop的reducer类。//重写reduce方法。//2.重写map方法。
2025-05-07 08:25:18
343
原创 简单的数据清洗
创建weblog项目,要保证此电脑的文件里面有vm文件在E盘,以及里面有weblogs文件。//每一行的文本内容,使用空格做拆分,得到一个列表。//1获取一行数据,使用空格拆分,得到字段数组。//2如果有6个字段我们就保留这条数组。//2.关联啊本地Driver类的jar。//6.设置输入数据和输出结果的地址。//3.关联map和reduce。//4.设置map的输出kv类型。//5.设置map的输出kv类型。//1.获取job对象。//1.继承 Mapper类。//2.重写map方法。
2025-05-07 08:24:21
298
原创 自定义分区器
/对每一个单词,把它当做key,并设置value为1。//2.关联啊本地Driver类的jar。//6.设置输入数据和输出结果的地址。//3.关联map和reduce。//4.设置map的输出kv类型。//5.设置map的输出kv类型。//对value中的值做累加求和。//2.重写getPartition方法。//1.继承lPartitioner类。//1.获取job对象。//1.继承 hadoop的map重写。//继承hadoop的reducer类。//重写reduce方法。//2.重写map方法。
2025-05-07 08:23:33
355
原创 HADOOP——序列化
String flowBean = String.format("总的上行流量是: %d,总的下行流量是:%d,总的流量是:%d",upFlowSum,downFlowSum,sumFlow);//1.遍历集合,取出每一个元素,计算上行流量和下行流量的总和。//上行流量就是第二个元素。//下行流量就是第三个元素。//手机号就是第一个元素。//2.计算总的汇总。//1.继承Reducer。//2.重写reducer。//1.继承Mapper。//hadoop序列化。//2.重写map函数。
2025-05-07 08:22:25
627
原创 Spark数据压缩
/2.关联啊本地Driver类的jar。//6.设置输入数据和输出结果的地址。//3.关联map和reduce。//4.设置map的输出kv类型。//5.设置map的输出kv类型。//1.获取job对象。
2025-05-07 08:21:14
420
原创 yarn的基本介绍
Hadoop是一个开源的分布式计算框架,它主要包括三大核心组件:HDFS(Hadoop Distributed File System)、YARN(Yet Another Resource Negotiator)和MapReduce。定义:是一个通用资源管理系统和调度平台,可为上层应用提供统一的资源管理和调度。RM:集群中的重要角色,决定系统中的所有应用程序之间资源的分配权限。AM:用户提交的每个应用程序都包含一个AM。3.yarn的三大组件及各自作用。NM:负责管理机器上的计算资源。
2025-05-07 08:19:42
291
原创 Spark与Hadoop之间的联系与区别
多场景支持:Spark 不仅支持大规模批处理,还支持实时数据处理(通过 Spark Streaming)、机器学习(通过 MLlib)、SQL 查询(通过 Spark SQL)和图计算(通过 GraphX)。Spark 的核心是 RDD(弹性分布式数据集),它支持多种复杂的数据处理操作,如转换(Transformation)和行动(Action)。Spark 是一个高性能的分布式计算框架,可以运行在 Hadoop 的 YARN 资源管理器上,也可以直接读取 HDFS 上的数据。
2025-05-07 08:18:45
440
原创 Spark环境搭建
这里使用单机模式快运行第一个Spark程序,让大家有个基本的印象。在安装Spark时,它就提供了一些示例程序,我们可以直接来调用。进入到spark-local,运行命令spark-submit命令。mv是linux的命令,这里的 \ 是换行输入的意思,整体的代码就只有一句,只不过太长了,我们把它拆开成几个部分来输入,其中\ 的意思就是这里写不下,写在下一行。接下来的操作,我们把它上传到集群中的节点,并解压运行。1.打开etc/profile.d/my_env.sh文件中,补充设置spark的环境变量。
2025-05-07 08:17:53
282
原创 RDD基本介绍
通过 SparkConf 类,你可以设置应用程序的名称、运行模式(如本地模式、集群模式)、资源分配(如内存、CPU 核心数)等。Resilient Distributed Dataset 叫做弹性分布式数据集,是Spark中最基本的数据抽象,是分布式计算的实现载体,代表一个不可变,可分区,里面的元素并行计算的集合。- Distributed: 分布式存储的,表示数据是存放在不同的机器上的。不可变的:immutable。并行计算:集合中的数据可以被并行的计算处理,每个分区数据被一个Task任务处理。
2025-05-07 08:16:15
1033
原创 SPark
这里使用单机模式快运行第一个Spark程序,让大家有个基本的印象。在安装Spark时,它就提供了一些示例程序,我们可以直接来调用。进入到spark-local,运行命令spark-submit命令。mv是linux的命令,这里的 \ 是换行输入的意思,整体的代码就只有一句,只不过太长了,我们把它拆开成几个部分来输入,其中\ 的意思就是这里写不下,写在下一行。接下来的操作,我们把它上传到集群中的节点,并解压运行。1.打开etc/profile.d/my_env.sh文件中,补充设置spark的环境变量。
2025-04-28 19:46:43
354
原创 搭建spark yarn
因为YARN中运行Spark,需要用到Spark的一些类和方法。#如果不上传到HDFS,每次运行YARN都要上传一次,比较慢。-- 历史日志在HDFS保存的时间,单位是秒 --># 启动MR的JobHistoryServer:19888。# 启动Spark的HistoryServer:18080。虚拟机中使用的分发文件,和分发命令脚本资源-优快云文库。#所以自己手动上传一次,以后每次YARN直接读取即可。-- 默认的是-1,表示永久保存 -->-- 关闭yarn内存检查 -->
2025-04-28 19:45:28
450
原创 mapreduce的工作原理
Mapper会接收键值对作为输入(通常是文件中的每一行内容),并对每一条记录调用用户自定义的map()函数,生成一系列中间键值对 (key, value)。Reducer接收到所有属于特定key的value列表后,会对它们应用用户定义的reduce()函数,进一步合并、统计或转换这些值。将待处理的大规模数据集按照一定的规则划分为若干个小的数据块(称为“分片”),每个分片可以分配到集群的不同节点。Reduce完成后,结果被写入磁盘或其他持久化存储介质,供后续分析使用。
2025-03-31 20:14:30
200
原创 安装虚拟机
它调用CentOS-7-x86_64-Minimal-2009.iso来安装操作系统.如果安装VMware17.6时,提示缺少文件,再来安装它,否则不用。1. CentOS-7-x86_64-Minimal-2009.iso : linux安装文件。D:\CentOS-7-x86_64-Minimal-2009.iso等待下载完成。1,先下载VC_redist.x86,以及VMware17.6。2,打开虚拟机,新建一个虚拟机使用程序光盘映像文件。5,点击完成,然后设置密码,点击两下完成,
2025-03-03 19:45:14
208
原创 Scala模式匹配——高阶用法
/ case Array(1,x,y) => println(s"三个元素,且第一个为一,第二个为${x},第三个为${y}")// case _:Int => println(s"$x 是Int类型的") // _:Int 表示变量是Int类型。// case Teacher(a,b) => println(s"${b}老师 ${a}")// case Stu(a) => println(s"学生${a}")// val t1 = Teacher("小明","体育")
2024-12-12 00:11:57
537
原创 scala——模式匹配-基础使用
case (x1,x2,x3)=>println("有三个元素",x1,x2,x3)case (x1,x2,x3,x4)=>println("有四个元素")case "42" => println("湖北")case "33" => println("浙江")case "11" => println("北京")case "31" => println("上海")// println("湖北")// println("浙江")// println("北京")
2024-12-12 00:11:25
329
原创 Scala全文单词统计
writer.println(s"${e._1}:${e._2}次")// val rs = content.split(",")正则表达式。val word = w.toLowerCase()//全小写。//Map不能直接排序,需要转成有序的集合。// W:表示非字符(,空格,?writer.close()//关闭。//4.根据出现的次数从高到低排序。//2.拆分字符串-->单词数组。//5.保存结果,涉及到写入文件。//3.统计出现的频率。// W+:多个非字符。
2024-12-12 00:09:58
347
原创 Scala的集合复习
原文链接:https://blog.youkuaiyun.com/GZM1314YMX/article/details/143889271。集合(可变 不可变):Set,List(链表:空间上不连续),Array(数组:空间上连续),Map。// subString(起点下标,终点下标,不包含)// println(q1.enqueue())//出队 1。// println(q1.enqueue())//出队 2。//2.取出他的生日,子串。// 4.前两位表示省份。//奇数为男,偶数为女。
2024-12-12 00:08:54
388
原创 Scala(多维数组)
val dream3 = DreamItem("健健康康的过完一生",true,"2024-11-19",3)val dream2 = DreamItem("吃遍全世界的美食",true,"2020-7-24",2)val dream1 = DreamItem("走遍全世界",true,"2010-10-10",1)dreamList += DreamItem("学会独立",true,"2024-1-12",1)val arr5 = Array.ofDim[Int](2, 2) //2行2列。
2024-12-12 00:07:22
583
原创 Scala中的Array
/ArrrayBuffer(1,2,3,4,5)取出3,4组成一个新的数组。//filter 过滤.从当前数组中找出重要的元素,组成一个新的数组。//数组的切片,从一个数组中取出相邻的元素·1组成一个新的数组。//slice(起点下标,终点下标) 不包括终点下标!// println(s"第一个元素是 ${arr1(0)}")// //2.访问,数组名(下标)。//indexOf(元素): //找到元素下标。//有 ,就返回第一次出现的下标。// //1.创建不可变数组。
2024-12-12 00:05:52
288
原创 Scala的迭代器
如果要访问集合,需要通过集合对应的迭代器的方法来访问。// println(it1.next())//作用:获得当前元素 + 移动迭代器。// println(it1.next())//作用:获得当前元素 + 移动迭代器。// println(it1.next())//作用:获得当前元素 + 移动迭代器。// val l2 = it1.toList //把剩余元素转成列表。// it1.next() //移动一次迭代器。// it1.next() //移动一次迭代器。
2024-12-12 00:04:43
274
原创 Scala的Set集合
override def toString: String = s"书名是:$bookName,作者:$author,价格:$price"println(book1)// println会自动去调用对象的toString方法。val book1 = new Book("西游记","吴承恩",100)//问题:Set可以把两本相同的书。//创建可变S儿童,添加两本相同的书。//case class 的特点。//3,它内置实现了一些方法。//2,可以省略new。//Set:特点去重。//1,数据是只读的。
2024-12-12 00:03:20
297
原创 Scala中的List
/ val rs = l1.contains(21) //判断元素是否存在list中。// l1.remove(0) //删除指定位置上的元素。// //不可变 l1(0) = 100 写法是错误的!// //7.合并List。// l1 -= 150 //删除指定位置的元素。// //2。// //6.判断元素是否存在。// //1建立一个不可变的列表。// //2,输出第一个元素。// //4,添加 +=//List:列表。
2024-12-12 00:02:04
388
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅