自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SparkSQL-数据提取和保存

【老师讲授案例的需求】 从给定的user.csv文件中,读入用户数据,过滤掉年龄<18岁的信息,然后把剩余的数据写入mysql数据库中。// 连接hadoop100上的mysql数据库,读出spark数据库中的person表中的内容。// 读入data/user.csv文件的数据,插入到mysql数据库中。.write.mode("append") // 写入到数据库中。在前面我们学习了SparkSQL的基本使用,下面我们完成一个大一点的案例。// 读入data/user.csv文件的数据。

2025-05-14 09:37:23 435

原创 SparkSQL操作Mysql

前面的课程我们学习了如何从csv文件中读入数据,这相当于是对csv这种类型的数据的操作。若已安装,需要先做卸载MySQL的操作命令是:rpm -e --nodeps mariadb-libs。(1)scala-library 是 Scala 语言的基础库,是编写 Scala 程序的必要条件。上一节课,我们配置了mysql环境,接下来,我们就来编写spark代码,来连接mysql数据库。注意,在输入密码的过程中,密码并不可见。使用的命令是: mysqld --initialize --user=mysql。

2025-05-14 09:36:42 978

原创 SparkSQL-基本使用

agg(sum($"quantity").as("total_quantity"), sum($"quantity" * $"price").as("total_sales")):对每个分组进行聚合操作,计算销售总量和销售总额,并分别命名为 total_quantity 和 total_sales。在我们前面的课程中,处理的数据基本都是文本文件,它们的内容没有基本的格式,而在实际的开发中,我们要处理的数据有很多都是结构化的,例如订单数据、商品数据、用户数据等。

2025-05-14 09:35:57 350

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

在代码中,通过编写一个自定义的分区函数,根据用户 ID 的范围返回对应的分区编号。如在之前的示例代码中,custom_partitioner 函数根据不同的 ID 范围返回 0、1、2 三个分区编号,从而实现按照地区进行分区的目的。具体来说,将用户 ID 在 0 - 1000 的订单数据分到一个分区,1001 - 2000 的分到另一个分区,2001 及以上的分到第三个分区。对电商订单数据进行处理,订单数据包含用户 ID 和订单金额,不同地区的用户有不同的 ID 范围。

2025-05-14 09:35:21 327

原创 自定义分区器-基础

这就类似于 Spark 中的分区,每个分区的数据可以在不同的计算节点上同时进行处理,从而加快整个数据处理的速度。在 Spark 中,RDD(弹性分布式数据集)的分区器决定了数据在各个分区的分布方式。在 Spark 中,分区是指将数据集按照一定的规则划分成多个较小的子集,每个子集可以独立地在不同的计算节点上进行处理,这样可以实现数据的并行处理,提高计算效率。在 Spark 中,RDD 是数据的集合,它会被划分成多个分区,这些分区可以分布在不同的计算节点上,就像图书馆的书架分布在不同的房间一样。

2025-05-14 09:34:45 300

原创 Spark缓存

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

2025-05-14 09:33:30 399

原创 HDFS的概述

其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统。HDFS中的文件在物理上是分块存储(Block),块的大小可以通过配置参数(dfs.blocksize)来规定,默认大小是128M。(1)文件上传 HDFS 的时候,Client 将文件切分成一个一个的 Block,然后进行上传;

2025-05-14 09:32:38 324

原创 数据清洗-案例

它是指对采集到的原始数据进行预处理,以去除错误、重复、不完整或不一致的数据,使数据符合分析要求的过程。对于reduce函数来说,它的输入参数是:<刷选后的每一行的内容,[null,null,...]>,对于我们的需求来说,并不需要这个阶段: 没有汇总的需求,直接使用Map的结果。map阶段:按行读入内容,对内容进行检查,如果字段的个数少于等于11,就删除这条日志(不保留)去除日志中字段个数小于等于11的日志内容。<偏移量,每一行的内容> → <刷选后的没一行的内容,null>// 5 设置输入和输出路径。

2025-05-14 09:32:00 360

原创 分区器的基本介绍

说明:这里的setNumReduceTasks的值最好与setPartitioner返回的分区器的个数一致。在MapReduce框架中,分区器(Partitioner)是一个关键组件,其主要作用是决定由一个maptask生成的键值,最终是生成在哪个文件中的。回顾我们的需求,我们在做词频统计的时候,把a-m开头的保存在一个文件中,n-z开头的保存在另一个文件中。自定义分区器:如果使用自定义分区器,可以根据特定的逻辑(如键的首字母、键的范围等)将数据分配到不同的Reducer中。(五)应用分区器解决需求。

2025-05-14 09:31:16 264

原创 序列化的概念

序列化的时候,它会自动被调用,将一个内存中的对象,序列化成为一个字节序列。Java的序列化是一个重量级序列化框架(Serializable),一个对象被序列化后,会附带很多额外的信息(各种校验信息,Header,继承体系等),不便于在网络中高效传输。通过序列化可以存储“活的”对象,可以将“活的”对象发送到远程计算机。反序列化时调用的方法,将一个字节序列,转成内存中的对象。下面我们来看一个例子:通过代码来定义一个类,并创建它的一个对象,把这个对象保存到文件中(序列化),然后再写代码读取这个文件并还原回来。

2025-05-14 09:29:49 419

原创 数据压缩的概念

即使你的MapReduce的输入输出文件都是未压缩的文件,你仍然可以对Map任务的中间结果输出做压缩,因为它要写在硬盘并且通过网络传输到Reduce节点,对其压缩可以提高很多性能,这些工作只要设置两个属性即可,我们来看下代码怎么设置。数据压缩是指在不丢失或尽可能少丢失数据信息的前提下,通过特定的算法和技术,对原始数据进行重新编码和处理,以减少数据存储空间或传输带宽的过程。基于WordCount案例,只需要在dirvier类的代码中,去设置在reduce端输出压缩开启,并设置压缩的方式即可。

2025-05-14 09:29:13 470

原创 Spark的基本介绍

为了实现这样的要求,同时获得最大灵活性,Spark支持在各种集群管理器(Cluster Manager)上运行,包括Hadoop YARN、Apache Mesos,以及Spark自带的一个简易调度器,叫作独立调度器。Spark:Spark Streaming 提供了强大的实时数据处理能力,它可以将实时数据流分割成小的批次进行处理,实现准实时的数据分析。这里的 \ 是换行输入的意思,整体的代码就只有一句,只不过太长了,我们把它拆开成几个部分来输入,其中\ 的意思就是这里写不下,写在下一行。

2025-05-14 09:28:20 639

原创 什么是SparkONYarn模式?

(一)什么是SparkONYarn模式Spark on YARN(Yet Another Resource Negotiator)是 Spark 框架在 Hadoop 集群中运行的一种部署模式,它借助 Hadoop YARN 来管理资源和调度任务。架构组成ResourceManager:作为 YARN 的核心,负责整个集群的资源管理和调度。它会接收来自各个应用程序的资源请求,并根据集群资源的使用情况进行合理分配。NodeManager:部署在集群中的每个节点上,负责管理该节点上的资源使用情况,监控容器的运

2025-05-14 09:27:32 701

原创 RDD的概念

Resilient Distributed Dataset 叫做弹性分布式数据集,是Spark中最基本的数据抽象,是分布式计算的实现载体,代表一个不可变,可分区,里面的元素并行计算的集合。- Distributed: 分布式存储的,表示数据是存放在不同的机器上的。类比理解scala中的不可变集合或者是使用val修饰的变量。并行计算:集合中的数据可以被并行的计算处理,每个分区数据被一个Task任务处理。可分区的:集合的数据课划分成为很多部分,每部分称为分区:Partition。// 创建一个本地集合。

2025-05-14 09:26:51 387

原创 Spark集群搭建-Standalone

9.启动SPARK集群。进入到hadoop100机器,切换目录到/opt/module/spark-standalone/sbin下,运行命令 ./start-all.sh。进入/opt/module/把解压的内容重命名一下,mv spark-3.1.1-bin-hadoop3.2/ spark-standalone。注意,这里不要省略./,它表示的是当前目录下的start-all命令,如果省略了./,它就会先去环境变量PATH中指定的目录来找这个命令。

2025-05-14 09:26:00 315

原创 finalshell的配置

我们在从本机开始去连接虚拟机时,都是通过ip地址来连接的,不方便。我们可以通过hostname的方式来访问。ping hadoop100或者是ping 192.168.10.100都应该可以通。5. 找到刚才建立的连接,点击连接。主机:192.168.10.100,或者是配置hosts之后的主机名。1. 点击开始安装,安装到D盘。安装目录没有中文,没有空格。输入对应主机的用户名密码。2. 启动finalshell,新建。2. 使用ping 命令来检查。1. 修改hosts文件。来,我们一起操作一下。

2025-05-07 09:18:18 231

原创 序列化与反序列化

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

2025-05-07 09:15:41 477

原创 ETL介绍

它是指对采集到的原始数据进行预处理,以去除错误、重复、不完整或不一致的数据,使数据符合分析要求的过程。对于reduce函数来说,它的输入参数是:<刷选后的每一行的内容,[null,null,...]>,对于我们的需求来说,并不需要这个阶段: 没有汇总的需求,直接使用Map的结果。map阶段:按行读入内容,对内容进行检查,如果字段的个数少于等于11,就删除这条日志(不保留)去除日志中字段个数小于等于11的日志内容。<偏移量,每一行的内容> → <刷选后的没一行的内容,null>// 5 设置输入和输出路径。

2025-05-07 09:14:51 579

原创 HDFS概述

其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统。HDFS中的文件在物理上是分块存储(Block),块的大小可以通过配置参数(dfs.blocksize)来规定,默认大小是128M。(1)文件上传 HDFS 的时候,Client 将文件切分成一个一个的 Block,然后进行上传;

2025-05-07 09:13:59 411

原创 配置hadoop集群-配置历史和日志

由于任务是在具体的节点上运行的,所以运行日志也是产生在具体的节点上,但是我们希望应用完成以后,将程序运行日志信息上传到HDFS系统上,这样就可以方便的查看到程序运行详情,方便开发调试。但是,请注意,在哪一台上配置了,就应该在哪一台上去启动。和之前的配置一样,我们需要把这个更新之后的yarn-site.xml文件同步到其他的机器。在hadoop的安装目录下,打开mapred-site.xml,并在该文件里面增加如下两条配置。请注意,你在配置的时候指定哪个节点是历史服务器,就在哪里启动,请不要搞错了。

2025-05-07 09:13:01 417

原创 配置hadoop集群-集群配置

对普通用户来说, Hadoop就是一个东西,一个整体,它能给我们提供无限的磁盘用来保存文件,可以使用提供强大的计算能力。但是,我们要把它搭建起起来,就必须要了解它的基本组成,知道它的内部分工。(1)NameNode(nn):存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),以及每个文件的块列表和块所在的DataNode等。每个框都是一个进程,可能都运行在一台主机上,但是,属于不同的集群。(2)DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验和。

2025-05-07 09:11:49 272

原创 配置hadoop集群--免密登录

所以,对于hadoop100来说,它要生成公钥,并拷贝到hadoop100, hadoop101, hadoop102上去。我们希望达成的目标是:希望用户在hadoop100登录到hadoop101时,hadoop101不需要输入密码。hosts文件中的主机名和ip地址是否与finalshell中的连接的主机名以及对应的虚拟机上的ip地址一致。(4)在hadoop100上,输入ssh hadoop101命令,看看是否可以免密登录?例如: 在hadoop100上,也需要去设置针对它自己的免密登录。

2025-05-07 09:10:57 602

原创 hadoop的运行模式

在一台机器上模拟出 Hadoop 分布式系统的各个组件,各个组件在逻辑上是分离的,但是都运行在同一台物理机器上,以此来模拟分布式环境。我们在前面的课中把hadoop100上安装了java,hadoop这个两个软件,那我们要如何才能把对于的文件拷贝到hadoop101上去?其中,第1项我们在之前克隆虚拟机的环节中已经完成了。我们上一节课使用的就是本地运行模式hadoop100。如果要拷贝的是文件夹,就把文件夹下的内容都拷贝。(2)$pdir/$fname: 要拷贝的文件路径/名称。

2025-05-07 09:09:43 242

原创 RDD算子的基本介绍

在 Apache Spark 中,RDD(弹性分布式数据集)是核心的数据抽象,RDD 算子可分为转换算子(Transformation)和行动算子(Action)。转换算子会基于现有的 RDD 创建一个新的 RDD,这些操作是惰性的,即只有在遇到行动算子时才会真正触发计算。flatMap(func):对 RDD 中的每个元素应用函数,然后将结果扁平化,生成一个新的 RDD。map(func):对 RDD 中的每个元素应用指定的函数,生成一个新的 RDD。take(n):返回 RDD 中的前 n 个元素。

2025-05-07 09:08:46 269

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

1.上传并解压spark-3.1.2-bin-hadoop3.2.tgz,重命名解压之后的目录为spark-yarn。对应的命令是:tar -zxvf spark-3.3.1-bin-hadoop3.tgz -C /opt/module。使用xsync /opt/module/hadoop-3.1.3/etc/hadoop/同步一下。

2025-05-07 08:51:37 677

原创 如何在idea中写spark程序

(1)访问Scala官方网站(https://www.scala-lang.org/download/)下载适合操 作系统的Scala安装包。安装Scala的操 作,也是一路默认安装即可。(2) 打开命令提示符(CMD),输入以下命令:scala -version 如果显示Scala 的版本信息,说明安装成功。Spark是基于scala的,当然它也可以支持java和scala还有python语言,我们这里会使用scala。它的功能是wordcount的功能:从指定的文件夹中去读取文件,并做词频统计。

2025-05-07 08:50:39 427

原创 Spark集群搭建

9.启动SPARK集群。进入到hadoop100机器,切换目录到/opt/module/spark-standalone/sbin下,运行命令 ./start-all.sh。进入/opt/module/把解压的内容重命名一下,mv spark-3.1.1-bin-hadoop3.2/ spark-standalone。注意,这里不要省略./,它表示的是当前目录下的start-all命令,如果省略了./,它就会先去环境变量PATH中指定的目录来找这个命令。

2025-05-07 08:48:54 371

原创 RDD的概念

Resilient Distributed Dataset 叫做弹性分布式数据集,是Spark中最基本的数据抽象,是分布式计算的实现载体,代表一个不可变,可分区,里面的元素并行计算的集合。- Distributed: 分布式存储的,表示数据是存放在不同的机器上的。类比理解scala中的不可变集合或者是使用val修饰的变量。并行计算:集合中的数据可以被并行的计算处理,每个分区数据被一个Task任务处理。可分区的:集合的数据课划分成为很多部分,每部分称为分区:Partition。// 创建一个本地集合。

2025-05-07 08:47:01 292

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

2025-04-23 11:17:47 327

原创 Yarn的概念

每个应用程序都有一个对应的 ApplicationMaster,它负责该应用程序的资源请求和任务调度。yarn中的从角色,作为每个节点上的代理,NodeManager 负责管理该节点上的资源和容器。yarn集群中的主角色,它是 YARN 中的全局资源管理器,负责整个集群的资源分配与调度。1.FIFO Scheduler(先进先出调度器)yarn是一个通用资源管理系统和调度平台。2.mapreduce 的作用是 计算。3.yarn 的作用是 调度。1.hdf 的作用是 存储。

2025-04-18 15:06:32 217

原创 MapReduce 工作原理详解

**分区(Partitioning)**:根据 key 的哈希值决定数据发送到哪个 Reduce 任务。- **Combiner(可选)**:本地 reduce,减少网络传输量。- **排序(Sorting)**:每个分区内的数据按键排序。- **数据本地性优化**:优先在存储数据的节点上执行任务。- **Map 阶段**:处理输入数据并生成中间键值对。- **Reduce 阶段**:对中间结果进行汇总处理。- **数据从 Map 端拷贝到 Reduce 端**

2025-03-31 20:02:08 317

原创 Hadoop集群常用命令

启动所有Hadoop服务。# 停止所有Hadoop服务。# 列出所有运行中的应用程序。# 查看MapReduce作业状态。## MapReduce作业命令。# 检查YARN节点状态。# 查看集群资源使用情况。# 提交MapReduce作业。# 检查HDFS一致性。# 检查HDFS状态。# 检查集群健康状态。## HDFS文件操作命令。## YARN作业管理命令。# 查看应用程序日志。# 设置目录空间配额。

2025-03-31 20:01:25 528

原创 如何配置虚拟机的IP上网

具体操作:选择控制面板->网络连接->VMware network Adapter Vmnet8->点击右键,选择属性,TCP/IPv4协议,改成:IP4地址:192.168.10.1 IPV4网关:192.168.10.2。linux中,ip地址是写在配置文件(/etc/sysconfig/network-scripts/ifcfg-ens33)中,这里使用 vi 编辑器去修改即可!让所有的vm配置的虚拟机使用NAT时,它们的网段都是一致的。具体设置为:进入虚拟机,修改对应的IP。

2025-03-02 22:39:31 308

原创 虚拟机中的指示命令

14. 在命令模式下:shift+zz:实现快速保存退出 G:可以调到文件的最后一行 gg:跳到文件的第一行 Home:快速定位到行首 End:可以快速定位到行尾 yy:复制光标所在行的内容 (n)yy:ex:3yy:复制当前行往下3行内容 p:当前行的下一行粘贴 P:当前行的上一行粘贴 dd:删除光标所在当前行内容 (n)dd:ex:3dd 删除当前行往下的3行 u:撤销上一步的操作 ctrl+r:反撤销(重做上一步的操作)会把111写入a.txt这个文件中,把之前的内容删除掉。

2025-03-02 22:38:34 605

原创 Linux中的查看命令

8.ls命令:-l:以长格式显示文件和目录的详细信息,包括文件权限、所有者、组、大小、修改时间等。-a:显示所有文件和目录,包括以 . 开头的隐藏文件和目录。-R:递归地列出指定目录及其子目录下的所有文件和目录。ex:touch a. txt mkdir 创建一个文件夹 mkdir -p:创建目录,如果父级目录不存在,就建立一个父级目录。7.删除文件:rm 删除的文件 rm -f:强制删除,无需向用户确认。2.#:命令提示符,从这个位置可以开始输入命令,另一个提示符为$,如果是root,则提示为#;

2025-03-02 22:37:40 290

原创 如何安装配置虚拟机

稍等一下,选择中文语言,继续,找到安装位置并进入,直接完成,开始安装,设置密码(自定义),安装完成重启虚拟机。二:安装完成之后,点击文件心建虚拟机,选择自定义,下一步,点击下一步,选择稍后安装操作系统,选择完成下一步,客户端操作系统Linux,版本(Centos 7 64位),下一步,虚拟机名称自定义,运行位置自选,下一步,处理器数量(1),每个处理器内核数量(1),一直点下一步到最后完成。用来在自己的电脑上安装虚拟机。如果安装VMware17.6时,提示缺少文件,再来安装它,否则不用。

2025-02-20 21:02:30 161

原创 scala的泛型

getMiddleEle(List(1,2,3,4,5)) ==> 5/2 = 2 ==> 下标为2的元素是:3。getMiddleEle(List(1,2,3,4)) ==> 4/2 = 2 ==> 下标为2的元素是:3。List[Int]: List 是列表, [Int] 是说列表中的每个元素都是int。2.泛型在编译时生效,在运行时不可见,最后产生的class文件中是没有泛型的。def 函数名(参数名: 类型): 返回值的类型 = {用它来获取当前的列表的中间位置的值。[]: 里面的是泛型。

2024-12-11 22:47:45 343

原创 scala的隐式对象

格式: implicit object。作用: 给函数的默认参数提供隐式值。

2024-12-11 22:43:36 143

原创 scala的隐式转换2

第二步: 定义一个隐式转换函数,把BaseUser ---> PowerUser。第一步:定义一个有updateUser功能的类 PowerUser。隐士类:implicit class == 隐式转换函数 + 类。implicit函数 + 普通类StrongString。目标:给字符串添加新功能。

2024-12-11 22:41:56 385

原创 Scala的隐式转换

②:函数名字不重要,重要的是参数类型和返回值类型。2.scala的隐式转换函数:implicit def 函数名。1.隐式转换:自动的,偷偷的把数据A->B。隐式转换:implicit修饰的函数。3.隐式值:implicit 修饰变量。有可能会成功,也有可能失败。特点:①:被自动调用。不能转换为Int类型。

2024-12-10 11:46:57 347

空空如也

空空如也

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

TA关注的人

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