自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SparkSQL操作Mysql(2)

(1)scala-library 是 Scala 语言的基础库,是编写 Scala 程序的必要条件。(2)spark-sql_2.12 提供了 Spark SQL 的功能,用于高效的数据处理和分析。(3)mysql-connector-java 提供了与 MySQL 数据库交互的能力。上面的代码运行完成之后,切换到finalshell中的mysql端,查看效果。【教师讲解这个三个依赖的作用,强调可以删除spark-core这个包】前面演示了数据的查询,现在来看看添加数据到mysql。

2025-05-14 15:53:14 418

原创 SparkSQL操作Mysql

安装完成之后,它会在一个日志文件中保存临时密码,通过cat命令来查看这个密码。具体的操作是:cat /var/log/mysqld.log。若已安装,需要先做卸载MySQL的操作命令是:rpm -e --nodeps mariadb-libs。我们计划在hadoop001这台设备上安装mysql服务器,(当然也可以重新使用一台全新的虚拟机)。注意,在输入密码的过程中,密码并不可见。对应的命令是:mysql -uroot -p。进入/opt/software/目录,解压上传的.tar文件。

2025-05-14 15:50:23 354

原创 需求-按商品号分组,计算每个商品的销售总量和销售总额

agg(sum($"quantity").as("total_quantity"), sum($"quantity" * $"price").as("total_sales")):对每个分组进行聚合操作,计算销售总量和销售总额,并分别命名为 total_quantity 和 total_sales。orderBy($"total_sales".desc):按销售总额降序排序。groupBy($"product_id"):按商品编号进行分组。limit(3):取前 3 条记录。

2025-05-14 15:47:21 238

原创 SparkSQL-基本使用

有一个名为 ecommerce_data.csv 的 CSV 文件,包含以下列:order_id(订单编号)、product_id(商品编号)、product_name(商品名称)、quantity(购买数量)、price(商品单价)、user_id(用户编号)、order_date(订单日期)。使用sql风格操作的前提是将DataFrame注册成一个临时表,在程序中直接使用spark.sql()方式执行SQL查询,结果将作为一个DataFrame返回。目标要求是:筛选出购买数量大于 5 的订单信息。

2025-05-14 15:45:31 295

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

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

2025-05-14 15:42:27 161

原创 (四)分区器和默认分区器

数据倾斜:当数据分布不均匀,某些分区数据量过大,导致计算负载不均衡时,可自定义分区器,按照特定规则重新分配数据,避免数据倾斜影响计算性能。通过定义分区规则,它能够将具有键值对类型的数据(PairRDD)按照一定策略划分到不同分区,以实现数据的合理分布,进而提高并行计算的效率。假设分区数为 n,键为 key,则分区编号的计算公式为 hash(key) % n。特定业务逻辑:若业务对数据分区有特殊要求,如按时间段将日志数据分区,不同时间段的数据存到不同分区便于后续处理分析;("勇士", "info1"),

2025-05-14 15:40:08 286

原创 自定义分区器-基础

这就类似于 Spark 中的分区,每个分区的数据可以在不同的计算节点上同时进行处理,从而加快整个数据处理的速度。在运行代码后,output 目录下会生成与 RDD 分区数量相同的文本文件,这里 RDD 分区数设置为 3,所以会生成 3 个文件,文件名通常为 part-00000、part- 00001、part-00002。在 Spark 中,分区是指将数据集按照一定的规则划分成多个较小的子集,每个子集可以独立地在不同的计算节点上进行处理,这样可以实现数据的并行处理,提高计算效率。

2025-05-14 15:37:43 309

原创 Spark缓存

当持久化某个RDD后,每一个节点都将把计算的分片结果保存在内存中,并在对此RDD或衍生出的RDD进行的其他动作中重用。MEMORY_ONLY_SER:将 RDD 以序列化的 Java 对象形式存储在内存中,相较于 MEMORY_ONLY,序列化后占用的内存空间更小,但读取时需要进行反序列化操作,会带来一定的性能开销。MEMORY_AND_DISK_SER:优先将 RDD 以序列化的 Java 对象形式存储在内存中,内存不足时存储到磁盘上。时,该RDD将会被缓存在计算节点的内存中,并供以后重用。

2025-05-14 15:33:25 637

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

以下是 10 条符合上述示例中数据格式(姓名,年龄,性别)的测试数据,包含了一些可能需要清洗掉的无效数据,你可以将其保存为一个文本文件,用于测试上面的数据清洗程序。假设你有一个包含用户信息的文本文件,每行格式为 姓名,年龄,性别,需要。coalesce(1)这个方法可以让结果全部保存在一个文件中。如果它不是数字或者缺失,则忽略这条数据。把清洗之后的数据保存到一个文件中。字段拆分,拆分出年龄这个字段。这里介绍一个拓展点:如何。对每一行数据进行分析。

2025-05-14 15:28:53 296

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

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

2025-05-14 14:24:20 898

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

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

2025-05-13 11:25:54 477

原创 运行Spark程序-在shell中运行 --SparkConf 和 SparkContext

通过 SparkConf 类,你可以设置应用程序的名称、运行模式(如本地模式、集群模式)、资源分配(如内存、CPU 核心数)等。主要作用配置应用程序参数:可以设置 Spark 应用程序的各种属性,如应用程序名称、主节点地址等。是 Spark 应用程序的入口点,它代表了与 Spark 集群的连接。通过 SparkContext,你可以创建 RDD(弹性分布式数据集)、累加器、广播变量等,还可以与外部数据源进行交互。写交互式代码:启动之后在spark-shell中写代码。

2025-05-13 11:22:09 426

原创 运行Spark程序-在shell中运行 --RDD的创建

Resilient Distributed Dataset 叫做弹性分布式数据集,是Spark中最基本的数据抽象,是分布式计算的实现载体,代表一个不可变,可分区,里面的元素并行计算的集合。可以通过将本地集合(如数组、列表等)传递给 SparkContext 的 parallelize。方法来创建 RDD。例如,读入外部的文件。

2025-05-13 11:19:43 228

原创 Tool接口改进代码

(4)重新打包生成jar,假设名称为MapReduceDemo1-1.0-SNAPSHOT.jar。(2)新建一个包,名字为com.yarn。(7)不使用-D参数,测试运行。接下来,使用-D参数运行效果。(5)上传到集群的节点上。

2025-05-13 11:13:28 312

原创 Yarn-tool接口

org.apache.hadoop.util.Tool 是 Apache Hadoop 框架里的一个接口,其用途是协助开发可通过命令行运行的 Hadoop 应用程序。run(String[] args):此方法为应用程序的主要执行逻辑,接收命令行参数,返回一个整数代表执行结果(通常 0 表示成功,非 0 表示失败)。3.main 方法使用 ToolRunner.run 方法来运行应用程序,并根据返回结果调用 System.exit 退出程序。getConf():用于获取当前的 Hadoop 配置对象。

2025-05-13 11:09:39 346

原创 案例---流量统计

通过上面的分析,在Map方法中,我们做数据拆分并实例化对象。这里要特别注意一下泛型的类型。我们现在有一个目录data下保持了一些日志文件,文件的内容格式如下。dirver类是常规写法,一共有7步,与之前学习的内容一致。需求统计每一个手机号耗费的总上行流量、总下行流量、总流量。在reducer类中,主要做汇总和输出的设置。有输出的结果,并且流量统计计算是正确的。写一个Bean对象,保存流量信息。实现Writable接口。运行程序,查看效果。

2025-05-13 11:05:47 503

原创 数据清洗-案例

代码说明:NullWritable就等价于null,context.write(value,NullWritable.get())就表示只有key,没有value。reduceTask为0,表示没有reduce阶段,程序会根据Map函数的结果把内容输出。最终输出的文件个数与mapperTask的数量一致。在之前的项目的基础之上,重写去写一个包,并创建两个类:WebLogMapper和WebLogDriver类。(1)编写WebLogMapper类。编写WebLogDriver类。

2025-05-13 10:58:04 180

原创 MapReduce打包运行

我们集群上安装的java环境是1.8的,那么我们生成的代码也必须是这个版本的,否则,就会无法运行。我们集群上安装的java环境是1.8的,那么我们生成的代码也必须是这个版本的,否则,就会无法运行。在上面的代码中,我们的程序只能完成固定目录下的功能。使用finalshell上到任意节点,例如hadoop100上的/opt下,。在pom.xml中,补充如下配置,它用来设置打包的java 版本。修改代码,让程序能指定要执行的输入目录和要保存结果的输出目录。修改driver类的代码,更新输入和输入路径。

2025-05-13 10:48:28 452

原创 WordCount案例实操-编码实现

请注意Mapper的来源,它是mapreduce.Mapper,而不是mapred.Mapper。后者是hadoop的老版本用法。准备maven工程,具体要求和之前的一致。1.新建一个空白项目。

2025-05-13 10:42:04 136

原创 HDFS的客户端操作(4)

文件更名和文件移动本质是一样的: 更新了这个文件的访问路径。这两个操作的的API都是rename。调用fs.listFiles获取指定目录下的文件信息。同样的,请大家运行之后,回去ui界面去检查。使用迭代器,循环遍历。

2025-05-13 10:33:34 200

原创 HDFS的客户端操作(3)

如果路径是一个目录,且目录下有子文件或子目录,设置为 true 可以将整个目录及其内容全部删除。如果设置为 false,则只能删除空目录。第一个参数 new Path("/xiyou") 指定了要删除的路径,/xiyou 是 HDFS 中的目录或文件路径。我们来看看fs.delete的格式:fs.delete(要删除的路径,是否递归删除)。调用fs.listFiles获取指定目录下的文件信息。调用fs.delete删除指定目录下的文件。好了,搞思路和格式之后,我们开始写代码。使用迭代器,循环遍历。

2025-05-13 10:30:34 133

原创 HDFS的客户端操作(2)文件上传

我们向/maven下上传一个文件。要用到的api是put (或者copyFormLocalFile)。接下来,我们看如何去下载文件。修改这个值之后,我们再去重新上传一个新的文件,并检查是否在hdfs的UI面板中能看到这个数值的变化。注意:如果执行上面代码,下载不了文件,有可能是你电脑的微软支持的运行库少,需要安装一下微软运行库。默认情况下,上传的文件会被保存3份,如果需要的话,我们可以随时去修改这个设置参数。上传结束之后,回到hdfs的UI界面去检查是否成功。客户端代码中设置的值。)服务器的默认配置(

2025-05-13 10:26:45 312

原创 HDFS的客户端操作(1)

去到hdfs的UI界面上去检查是否运行成功。在根目录下去创建一个名为maven的文件夹。要用到的api是fs.mkdirs。此时,需要去设置登录的用户名。

2025-05-13 10:22:37 246

原创 配置历史服务器

大家可以通过./stop-all.sh 来停止spark集群,然后再通过start-all来重新启动集群。2.修改/opt/module/spark-standalone/conf/spark-default.conf.temple。代码说明:这里指定了历史任务相关的信息要保存在集群的/directory文件夹下,所以要确保我们有这个目录,并且hdfs服务时是开启的状态。进入/opt/module/spark-standalone/sbin, 运行命令 ./stop-all.sh。此时应该是没有任务的。

2025-05-13 08:21:16 197

原创 Spark集群搭建Stand-alone

进入到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-05-13 08:15:07 377

原创 打包Spark代码在集群中运行

1.打开idea,新建一个项目为WordCount,新建scala类WordCount_online。-- 添加必要的插件以打包scala程序-->5.上传到集群,执行代码。

2025-05-07 15:52:09 542

原创 如何在idea中写spark程序

同时,安装 Scala 开发环境,你可以从 Scala 官方网站下载并安装 Scala SDK。:从 JetBrains 官方网站下载并安装适合你操作系统的 IntelliJ IDEA 版本,建议使用 Ultimate 版,因为它对 Scala 和 Spark 开发支持更好。记得在编写代码时,根据需要导入 Spark 相关的类和方法,以实现你想要的功能。运行 Spark 程序:点击运行按钮或者使用快捷键运行 Spark 程序,可以在控制台查看程序的输出。文件,添加 Spark 相关依赖。

2025-04-28 20:18:54 581

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

【代码】如何搭建spark yarn 模式的集群。

2025-04-28 20:13:25 1043

原创 Spark--基本介绍

■ MapReduce:批处理框架,通过分治思想处理数据(Map阶段分散任务,Reduce阶段聚合结果)。Spark是基于内存的快速,通农用,可拓展的大数据分析计算引擎,Hadoop是一个分布式系统基础架构。■ 内存计算:中间数据优先缓存到内存,减少磁盘IO,迭代计算速度提升10-100倍。■ RDD容错:通过RDD的血缘关系(Lineage)重建丢失数据,避免冗余存储。■ 磁盘读写:中间结果频繁写入磁盘,适合离线批处理,但延迟高。■ 容错机制:通过数据冗余(HDFS)和任务重试实现容错。

2025-04-22 08:27:03 327

原创 流量统计--Maven依赖

分别创建FlowBean FlowDriver FlowMapper FlowRecuder。-- 添加hadoop-client 3.1.3的依赖-->

2025-04-15 09:07:21 509

原创 vi编辑器

它的功能类似如cat,不过他会翻页的形式显示,适合大文件查看列如:more /etc/sudo.conf。命令:tar -cvf test.tar 1.txt 2.txt 3.txt。说明:如果源文件和目标文件在同一个目录下,就是重命名,否则就是移动。移动示例:mv file.txt newdir/file.txt。命令:tar -xvf test.tat -C ./temp。重命名示例:mv file.txt newfile.txt。示例:cp file1.txt file2.txt。

2025-03-04 08:07:09 232

原创 Linux打开文件创建文件

1.如果这个文件不存在,此时就是新建文件,编辑器的左下角会提示:new file。把这个文本内容添加到一个全新的文件的快捷方式:echo l >> 1.txt。2.如果这个文本已经存在,此时就打开这个文件,进入命令模式.在命令模式下按shift + zz可以实现快速保存退出。1.yy(小写)复制光标所在行的内容。用VI 编辑器打开,创建和保存文件。用VI 编辑器进行复制,粘贴,删除。1.p(小写)在当前行的下一行粘贴。1.dd用来删除光标所在当前行内容。1.创建/打开:vi a.txt。

2025-02-25 11:11:22 338

原创 Linux 命令

波浪线,当前用户的home目录,比如root用户home目录是/root。ls:列出目录内容,包括参数-l(详细列表),-a(显示隐藏文件)mkdir -p:创建目录,如果父级目录不存在,就建立一个父级目录。rm file.txt,他会给一个提示,确认后才能删除。mkdir:创建目录。格式是:mkdir 目录名。rm -f file.txt 无需用户确认。touch命令:创建一个空文件。.. 当前目录的上一级目录。cd .. :进入上一级目录。pwd:查看当前位置。pwd:查看当前位置。

2025-02-19 21:21:32 381

原创 1分钟教会你如何搭建虚拟机

获取适用于目标平台(这里是 x86_64 架构下的 CentOS 版本)的操作系统 ISO 文件作为安装介质。可以通过官方渠道或者其他可信来源下载所需镜像文件,并将其加载到已建立好的虚拟环境中准备进行正式安装。一旦 VM VirtualBox 成功安装,在应用程序中启动它来创建新的虚拟机。通过点击“新建”按钮开始创建流程,并根据提示逐步设定新虚拟机的各项参数,如操作系统类型、版本以及命名等信息。这包括但不限于内存大小、CPU核心数目的指定;该软件的安装过程较为简单,只需选择合适的安装路径并依次确认即可。

2025-02-19 14:52:22 350

原创 Scala的泛型

【代码】Scala的泛型。

2024-12-11 17:08:11 142

原创 Scala的隐式对象

【代码】Scala的隐式对象。

2024-12-11 17:05:49 120

原创 Scala的隐式类

【代码】Scala的隐式类。

2024-12-11 15:30:06 441

原创 Scala的隐式参数

【代码】Scala的隐式参数。

2024-12-11 15:29:05 157

原创 Scala的隐式转换

【代码】Scala的隐式转换。

2024-12-09 17:04:23 135

原创 scala正则表达式的第三个应用场景

【代码】scala正则表达式的第三个应用场景。

2024-12-09 16:19:24 443

空空如也

空空如也

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

TA关注的人

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