自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(96)
  • 收藏
  • 关注

原创 自定义分区器-基础

这就类似于 Spark 中的分区,每个分区的数据可以在不同的计算节点上同时进行处理,从而加快整个数据处理的速度。MyPartitioner类继承自Partitioner,实现了numPartitions方法指定分区数量为 3 ,实现getPartition方法,根据球队名称判断分区索引,湖人对应分区 0,火箭对应分区 1,其他球队对应分区 2。在 Spark 中,RDD 是数据的集合,它会被划分成多个分区,这些分区可以分布在不同的计算节点上,就像图书馆的书架分布在不同的房间一样。

2025-05-14 14:30:39 1062

原创 RDD的自定义分区器-案例

对电商订单数据进行处理,订单数据包含用户 ID 和订单金额,不同地区的用户有不同的 ID 范围。我们会按照地区对订单数据进行分区,这样做能让相同地区的订单数据处于同一分区,便于后续按地区进行统计金额分析。创建input文件夹,在input下新建记事本文件,在src下创建新的scala文件,开始写功能代码。1001-2000号分成一个区;0-1000号分成一个区;2001~号分成一个区;创建新的maven项目。内容就是前面的实例数据。

2025-05-14 14:30:20 135

原创 Spark处理过程-案例数据清洗

以下是 10 条符合上述示例中数据格式(姓名,年龄,性别)的测试数据,包含了一些可能需要清洗掉的无效数据,你可以将其保存为一个文本文件,用于测试上面的数据清洗程序。“李四” 的年龄为空,“赵六” 和 “吴九” 的年龄不是有效的数字,在执行数据清洗程序时,这些行应该会被过滤掉。创建input文件夹,在input下新建记事本文件,内容就是前面的实例数据。假设你有一个包含用户信息的文本文件,每行格式为 姓名,年龄,性别,需要。教师展示要清洗的数据,请同学们观察,并回答应该要清洗掉哪些数据?教师讲授:项目的需求。

2025-05-13 14:30:00 182

原创 VMware Workstation 17 Pro 虚拟机安装教程

CentOS 在 Linux 内核的基础上,添加了一系列的软件包、工具和配置,形成了一个完整的、可直接使用的操作系统。Linux:是一种开源的操作系统内核,它提供了操作系统最核心的功能,如进程管理、内存管理、文件系统管理、设备驱动管理等底层架构和功能。CentOS 和 Linux 的关系是:CentOS 是基于 Linux 内核构建的一个具体的操作系统发行版,它们属于具体与抽象、局部与整体的关系。如果我们选择这个命令,并选中一个现有的iso文件,那么就表示我们将创建一个由这个映像文件而安装的系统。

2025-05-13 11:01:30 1939

原创 给虚拟机配置IP

虚拟机IP这里一共有三个地方要设置,具体说明如下:(1)配置vm虚拟机网段如果不进行设置,每次启动机器时都可能是随机的IP,不方便我们后续操作。具体操作是:点击编辑→虚拟网络编辑器选择VMnet8, 要改动两个地方(注意:它会需要管理员权限):子网IP改成192.168.10.0让所有的vm配置的虚拟机使用NAT时,它们的网段都是一致的。注意:这里的第三个部分的10并不是固定的,我们自己可以约定,但是约定之后就要固定下来。(2)配置Windows本地虚拟网卡,让本机也可以访问虚拟机。

2025-05-13 10:47:18 400

原创 教你快速配置host

先给大家演示一个小把戏:强制戒除美好生活 - 让我们的电脑不能访问douyin。只需要一个步骤,一句代码设置。打开文件:C:\Windows\System32\drivers\etc\hosts,并在文件的最后补充一句:注意 douyin.com的前面有一个空格。修改保存之后,请再次去浏览器中去访问抖音.com。看看,是不是已经打不开啦?请大家去自己的电脑上去操作一次!好的,我们来讲解一下这个过程到底发生了什么?

2025-05-13 10:43:49 1334

原创 克隆虚拟机组成集群

在随后的设置中,请注意两点:(1)要给其他两台虚拟机取不同的名字。要注意,这里是虚拟机的名称,而不是它的hostname。(2)要将这两台克隆出来的虚拟机和hadoop100保存在同一个磁盘目录下,方便我们统一管理。克隆之后,我们得到了hadoop101,hadoop102,由于它们是从hadoop100直接扣克隆过来的,所以目前他们的ip和hostname都是很hadoop100是一样的,这里就需要修改下。vm软件提供了克隆的功能,它可以允许我们从一台虚拟机上快速克隆出其他的一模一样的主机。

2025-05-13 10:29:49 184

原创 在虚拟机上安装hadoop

etc/profile 是系统级别的全局配置文件,当用户进行登录操作时,该文件会被执行,而/etc/profile 脚本里包含了对/etc/profile.d 目录下脚本的扫描和执行逻辑。要运行 hadoop 程序我们先要去安装它的基础环境,因为它是基于java的,所以我们要先去安装 java.JDK,然后再去安装hadoop。所以,我们可以把需要用到的环境变量配置到一个新的.sh文件中,再把这个新的文件放在profile.d目录下。的方式来获取配置信息,而不需要在代码中硬编码特定的路径或设置。

2025-05-13 10:27:31 342

原创 教你如何创建Maven项目

步骤一:打开 IDEA,点击 File -> Settings(Windows/Linux)或者 IntelliJ IDEA -> Preferences(Mac),进入设置界面,然后找到 Build, Execution, Deployment -> Build Tools -> Maven。步骤三:可以在 User settings file 中指定 settings.xml 文件的路径(一般使用默认路径即可),Local repository 中指定本地仓库的路径,配置完成后点击 OK 保存设置。

2025-05-13 10:20:44 811

原创 教你了解数据压缩

有损压缩则会在一定程度上牺牲数据的精度来换取更高的压缩比,适用于对数据质量损失有一定容忍度的场景,如图像、音频、视频等多媒体数据。即使你的MapReduce的输入输出文件都是未压缩的文件,你仍然可以对Map任务的中间结果输出做压缩,因为它要写在硬盘并且通过网络传输到Reduce节点,对其压缩可以提高很多性能,这些工作只要设置两个属性即可,我们来看下代码怎么设置。数据压缩是指在不丢失或尽可能少丢失数据信息的前提下,通过特定的算法和技术,对原始数据进行重新编码和处理,以减少数据存储空间或传输带宽的过程。

2025-05-13 10:15:51 440

原创 一分钟教你学会Yarn

通过为每个组织分配专门的队列,然后再为每个队列分配一定的集群资源, 这样整个集群就可以通过设置多个队列的方式给多个组织提供服务了。队列内部又可以垂直划分,这样一个组织内部的多个成员就可以共享这个队列资源了,在一个队列内部,资源的调度是采用的是先进先出(FIFO)策略。一台机器上有很多的容器,有的容器大,有的容器小。3、现在,如果B用户在其他作业仍在运行时开始第二个作业,它将与B的另一个作业共享其资源,因此B的每个作业将拥有资源的四分之一,而A的继续将拥有一半的资源。用户提交的每个应用程序均包含一个AM。

2025-05-13 10:09:55 723

原创 spark的安装以及单机模式的运行

在安装Spark时,它就提供了一些示例程序,我们可以直接来调用。进入到spark-local,运行命令spark-submit命令。4.重命名,把解压后的文件夹改成spark-local。mv是linux的命令,这里的 \ 是换行输入的意思,整体的代码就只有一句,只不过太长了,我们把它拆开成几个部分来输入,其中\ 的意思就是这里写不下,写在下一行。接下来的操作,我们把它上传到集群中的节点,并解压运行。1.打开etc/profile.d/my_env.sh文件中,补充设置spark的环境变量。

2025-05-13 09:33:12 274

原创 在spark里通过jps命令,看到的进程

与 Spark 的 JobHistoryServer 类似,它收集 MapReduce 作业的运行信息,包括作业的提交时间、执行时间、任务的运行状态、输入输出统计等,以便用户可以查看过去运行的 MapReduce 作业的详细信息,用于分析作业性能、调试问题以及进行容量规划等。作用:是 HDFS 的核心组件,负责管理文件系统的命名空间,维护文件系统树以及文件树中所有的文件和目录的元数据信息,包括文件的权限、副本数量、数据块的位置等。作用:是 Spark 集群的主节点,负责管理整个集群的资源和任务调度。

2025-05-13 09:26:54 595

原创 Spark处理过程-行动算子

行动算子是触发 Spark 计算的“触发点”,因为 Spark 的 RDD 是懒惰计算的,只有在执行行动算子时,才会真正开始计算。它会触发 Spark 作业的实际执行,对 RDD 中的所有元素进行计数,并将最终的计数结果返回给驱动程序。f: T => Unit:这是一个函数,它接收一个类型为 T 的元素(T 为 RDD 中元素的类型),并对该元素执行相应的操作,但不返回任何值(返回类型为 Unit)。返回值:返回一个包含 RDD 中所有元素的数组,数组元素的类型与 RDD 中元素的类型一致。

2025-05-13 09:03:10 381

原创 Spark处理过程-转换算子

它的核心作用是对具有相同键的所有值进行聚合操作,通过用户提供的聚合函数将这些值合并成一个结果,从而实现数据的归约和统计。:对 RDD 中的每个元素应用给定的函数 f,将每个元素转换为另一个元素,最终返回一个新的 RDD。:筛选出 RDD 中满足函数 f 条件(即 f 函数返回 true)的元素,返回一个新的 RDD,新 RDD 中的元素类型与原 RDD 相同。:对 RDD 中的每个元素应用函数 f,函数 f 返回一个可遍历的集合,然后将这些集合中的元素扁平化合并成一个新的 RDD。

2025-05-13 08:47:53 536

原创 在sheel中运行Spark ——RDD

在部分分区数据丢失时,Spark可以通过这个依赖关系重新计算丢失的分区数据,而不是对RDD的所有分区进行重新计算。Resilient Distributed Dataset 叫做弹性分布式数据集,是Spark中最基本的数据抽象,是分布式计算的实现载体,代表一个不可变,可分区,里面的元素并行计算的集合。RDD的分区是RDD数据存储的最小单位。举个生活中的例子:高考的时候,每个班的同学都打散到不同的考场,此时的高3(8)班就是一个抽象的概念,在实际中,这个班级的学生可能分布在5个不同的考场。

2025-05-13 08:40:50 913

原创 Spark的缓存

当持久化某个RDD后,每一个节点都将把计算的分片结果保存在内存中,并在对此RDD或衍生出的RDD进行的其他动作中重用。MEMORY_ONLY_SER:将 RDD 以序列化的 Java 对象形式存储在内存中,相较于 MEMORY_ONLY,序列化后占用的内存空间更小,但读取时需要进行反序列化操作,会带来一定的性能开销。RDD通过persist方法或cache方法可以将前面的计算结果缓存,但是并不是这两个方法被调用时立即缓存,而是触发后面的行动算子时,该RDD将会被缓存在计算节点的内存中,并供以后重用。

2025-05-13 08:33:52 494

原创 如何在idea中写spark程序

若要使用 Scala 编写 Spark 程序,需在 IntelliJ IDEA 中安装 Scala 插件。:从 JetBrains 官网下载并安装适合你操作系统的 IntelliJ IDEA 版本,建议使用社区版或旗舰版。:确保系统中已安装 Java 开发工具包(JDK),建议使用 Java 8 及以上版本,并配置好。根据实际需求,你还可以添加其他 Spark 模块的依赖,如。方法,程序会以本地模式运行,适合开发和调试。,在搜索框中输入 “Scala”,然后点击。,确保 JDK 版本正确配置,点击。

2025-04-28 20:04:48 548

原创 如何搭建spark yarn模式的集群

所有节点需安装好 Java(建议 Java 8 及以上版本)、Hadoop(版本 2.7 及以上)和 Spark(版本 2.4.x 或 3.0.x 均可)。:准备至少 3 台服务器,1 台作为主节点(NameNode、ResourceManager),其余作为从节点(DataNode、NodeManager)。若作业成功运行并输出计算结果,表明 Spark YARN 集群搭建成功。在所有节点上安装 Java 并配置环境变量,编辑。将 Spark 压缩包解压到指定目录,例如。

2025-04-28 19:59:39 474

原创 在spark集群中搭建standalone

进入到hadoop100机器,切换目录到/opt/module/spark-standalone/sbin下,运行命令 ./start-all.sh。进入/opt/module/把解压的内容重命名一下,mv spark-3.1.1-bin-hadoop3.2/ spark-standalone。注意,这里不要省略./,它表示的是当前目录下的start-all命令,如果省略了./,它就会先去环境变量PATH中指定的目录来找这个命令。11.查看启动效果。(linux,ip设置,能ping 百度),免密互联。

2025-04-22 11:03:56 375

原创 spark和Hadoop之间的对比和联系

Spark 诞生主要是为了解决 Hadoop MapReduce 在迭代计算以及交互式数据处理时面临的性能瓶颈问题。Hadoop MR 框架从数据源获取数据,经过分析计算后,将结果输出到指定位置,核心是一次计算,不适合迭代计算。spark 框架spark Core:实现了Spark的基本功能,包含任务调度,内存管理,错误恢复,存储系统交互等模块。spark SQL: 是Spark用来操作结构化数据的程序包。通过Spark SQL,我们可以使用SQL或者Apache Hive 版本的HQL来查询数据。

2025-04-22 08:41:00 1124

原创 一分钟教你学会流量统计

但是,这里有一个问题:map和reduce这两个函数都是通过key,value的方式来进行数据交互的,这里的key可以设置为手机号,而value值就比较复杂,它有两个信息:上行流量和下行流量要统计。而这就必然引出一个新的问题:因为key,value是需要进行磁盘的读写的,所以它们必须要能序列化,如果我们创建一个新的类来描述流量数据,就必须也实现序列化。在map阶段,我们读入每一行数据,通过空格分割,切分字段,抽取手机号,上行流量和下行流量。通过上面的分析,我们总结出基本步骤是。运行程序,查看效果。

2025-04-16 01:00:00 218

原创 Hadoop的序列化

序列化的时候,它会自动被调用,将一个内存中的对象,序列化成为一个字节序列。如果序列化的属性不是Hadoop的序列化类型,就要调用相应的方法把它进行序列化。Java的序列化是一个重量级序列化框架(Serializable),一个对象被序列化后,会附带很多额外的信息(各种校验信息,Header,继承体系等),不便于在网络中高效传输。下面我们来看一个例子:通过代码来定义一个类,并创建它的一个对象,把这个对象保存到文件中(序列化),然后再写代码读取这个文件并还原回来。(五)hadoop的序列化。

2025-04-15 08:45:55 412

原创 如何配置HADOOP_HOME环境变量

生命周期:Maven 定义了一套标准的项目构建生命周期,主要包括 `clean`、`default` 和 `site` 三个生命周期。每个生命周期由多个阶段(phase)组成,例如 `default` 生命周期包含 `compile`、`test`、`package`、`install`、`deploy` 等阶段。Maven 可以帮助你管理这些依赖项,你只需在项目的 `pom.xml` 文件中声明所需的依赖,Maven 就会自动从远程仓库下载这些依赖项,并将其添加到项目的类路径中。

2025-04-15 08:42:45 913

原创 一分钟教你学会数据清洗

利用工具的去重功能,Excel 中可通过 “删除重复项” 按钮,pandas 中使用drop_duplicates()函数,一键就能删除这些重复数据,保证数据的唯一性。数据格式不一致也很麻烦。如员工薪资,有的以 “元” 为单位,有的以 “万元” 为单位。在数据的世界里,原始数据就如同未经雕琢的璞玉,往往夹杂着杂质,而数据清洗便是去除这些杂质,让数据闪耀光芒的关键步骤。别担心,接下来,只需一分钟,就能初步掌握数据清洗的奥秘。经过这几步,原本杂乱的数据就会变得整洁有序,为后续的数据分析和挖掘工作打下坚实基础。

2025-04-02 15:54:13 212

原创 MapReduce 的工作原理

MapReduce 是一种编程模型,用于大规模数据集的并行运算。

2025-03-31 19:52:34 550

原创 Hadoop 集群的常用命令

hadoop fs -chown <owner>:<group> <path>: 修改文件所有者。hadoop fs -put <local> <hdfs>: 从本地复制文件到HDFS。hadoop fs -get <hdfs> <local>: 从HDFS复制文件到本地。hadoop fs -chgrp <group> <path>: 修改文件所属组。hadoop fs -chmod <mode> <path>: 修改文件权限。hadoop fs -cp <src> <dst>: 复制文件。

2025-03-31 19:49:20 415

原创 vi编辑器的使用

替换::%s/old/new/g全局替换,:%s/old/new/gc全局替换并逐个确认。keyword向前查找;删除行:dd删除当前行,ndd删除当前行及下面的n - 1行(如3dd删除 3 行)。不保存退出:若文件未修改,在命令模式输入:q;保存并退出:在末行模式(命令模式下按:进入)输入:wq 或 :x。在命令模式下按:进入末行模式,可进行文件保存、查找替换等操作。基本移动:使用h(左)、j(下)、k(上)、l(右)键。切换到下一个文件:在末行模式输入:bn。切换到上一个文件:在末行模式输入:bp。

2025-02-25 11:39:31 391

原创 spark的一些指令

会把111写入a.txt 这个文件中,把之前的内容删除掉。如果这个文件不存在,就会顺手创建这个文件。echo111 >> a.txt . 会把111追加到a.txt 这个文件中。会把当前日期覆盖到a.txt 这个文件中。命令是:tar -cvf test.tar 1.txt 2.txt 3.txt。移动操作: mv file.txt newdir/file.txt。把1.txt , 2.txt , 3.txt 压缩到test.tar中。重命名操作:mv file.txt newfile.txt。

2025-02-25 10:46:33 329

原创 Spark大数据分析

目前,Spark生态系统已经发展成为一个包含多个子项目的集合,其中包含SparkSQL、Spark Streaming、GraphX、MLlib等子项目,Spark是基于内存计算的大数据并行计算框架。定义:数据来源和格式多样化,包括结构化数据(如数据库表)、半结构化数据(如 JSON、XML)和非结构化数据(如文本、图像、视频)。数据清洗:Spark 提供了丰富的数据转换操作(如 filter、dropna、fillna 等),能够有效清洗和预处理数据。

2025-02-18 11:36:48 297

原创 Scala的泛型

/ List(1,2,3,4,5) ==> 中间元素的下标 = 长度/2 ===> 3。// 需求:你是一个程序员,老板让你写一个函数,用来获取列表中的中间元素。

2024-12-11 17:06:23 418

原创 Scala的隐式转换

隐式转换: 编译器 偷偷地,自动地帮我们把一种数据类型转换为另一种类型。它有失败的时候(double-->int),有成功的时候。例如:int --> double。当它转换失败的时候,我们提供一个工具,让它能成功。

2024-12-09 17:10:14 226

原创 Scala 的正则表达式

/4. \w 等价于[0-9A-Za-z_] 63个字符,表示一个字 word。任务: 把字符串中的手机号打码:类似于:138****5678。正则表达式是一种用于匹配,查找和替换文本中特定模式的字符串。//2. \d 等于[0-9] 匹配一个数字 digit。//3. \D 除了\d 之外的其他任意字符。//1. . 表示 除了换行之外的其他的任意单个字符。//5. \W 除了\w之外的任意字符。//6. \s 表示一个空格 space。//7. \S 表示一个非空格。案例一:验证用户名是否合法。

2024-12-09 15:45:47 370

原创 Scala 匹配模式-高级用法

其中,value 是要进行匹配的值,pattern 是匹配模式,guardCondition 是守卫条件(一个布尔表达式),result 是当该 case 分支匹配成功时返回的结果。守卫语句是一个附加在case 语句后的布尔表达式,用于进一步筛选匹配条件。只有当match 的值满足 case 模式并且守卫语句的条件也为真时,该 case 分支才会被执行。需求:现在有一个数组Array(1,2,3,4),我希望能定义三个变量,它们的值分别是数组中的第1,2,3个元素的值。

2024-12-04 15:36:56 698

原创 Scala 的模式匹配-基础使用

我们今天接到一个开发任务,就是根据身份证号码,输入这个人的籍贯。列如:42 表示湖北,33表示浙江,11表示北京,31表示上海。模式匹配:swtich++ , case++要显示给用户的是 一等,二等,三等,四等。能根据元组元素的个数来匹配,不是一一精确的匹配值。从数据库中获得数据1,2,3,4。match case 匹配元组。

2024-12-02 15:28:17 397

原创 题目:统计成绩

/3) 如何判断一个正整数是否可以被三整除?3.列出总分前3名和单科前3名,并保存结果到文件中。//1) 迭代器,跳过第一个元素。1.计算每个同学的总分和平均分。//2) 把字符串转成数字。2.统计每个科目的平均分。

2024-11-27 17:02:24 240

原创 题目:图书馆书籍信息

1.创建一个可变的Map,用于存储图书馆中的书籍信息。键为书籍编号,值为包含书籍名称、作者、库存数量的元组。初始化这个Map,包括几本你喜欢的书籍的信息。4.修改某本书籍的库存数量。假设可以通过键找到对应的元组并修改其中的值,这里体现了可变Map的特性。6.遍历图书馆书籍Map,并打印出每本书的信息。3.根据书籍编号查询某一本特定的书籍信息。操作符向图书馆集合中添加两本新的书籍。操作符从图书馆集合中删除一本书。方法获取信息,并输出结果。

2024-11-27 16:51:52 352

原创 Scala 的知识点

对于m1,它是一个Map(thank:10, is:5), 现在需要对它进行排序,把出现次数最多的放在最前面,然后再输出。1. 字符串.split("分隔符"):把字符串用指定的分隔符,拆开成多个部分,保存在数组中。\\W+: 大写字符W表示:非字(不是一个字的字符。列如:空格 逗号 句号 换行...)从文件1.txt 中,读入内容。把字符串中的每个单词,拆出去。

2024-11-27 15:46:53 470

原创 Scala 中身份证里的密码

/ 5. charAt(下标) 得到对应位置的字符(不是字符串)// 4. substring(起点,终点-不包括) 字符串。// 9. length 属性,用来获取有几个字符。// 2. toUpperCase 变大写。// 3. toLowerCase 变小写。// 6. asDigit 把字符转成数字。// 7. """ 三引号字符串,支持换行。// 8. contains 是否包含子串。// 1. toInt 把字符串转成整数。

2024-11-25 17:08:20 366

原创 Scala 的集合复习

Map,Set,Array,List 是不是只有这四个?Queue:队列,先进先出。enqueue 入队,dequeue。(1)序列Seq:表示有先后顺序的集合。Array,List。Stack:栈,后进先出。pop 出栈,push入栈。(2)集Set:表示无序且不重复的集合。(3)映射Map:表示键值对。

2024-11-25 14:26:31 286

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除