自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Zookeeper(2)

分布式系统是一种由多个独立的计算机(节点)组成的系统,这些节点通过网络通信来协同完成任务,对外表现为一个整体的系统。一般是产品人员提需求 → 数据部门搭建数据平台,分析数据指标 → 数据可视化(报表展示,邮件发送,大屏幕展示等等)前面介绍了大数据的一些基本理论,那大家知道在一家企业中,大数据部门是怎么构成的?一共有四个组成部分:MapReduce计算,Yarn资源调度,HDFS数据存储,Common辅助工具。广义上讲,Hadoop是一个更广泛的概念-- Hadoop生态圈。,是如何协同工作的呢?

2025-05-14 09:53:50 126

原创 Zookeeper(1)

spark经常和hadoop来对比,更准确是和mapReduce进行对比,因为spark本身也是一个计算框架。进入到我们安装yarn的主机,通过命令来关闭掉yarn和historyServer,然后再重启。大数据不止有数量大这个显著的特点,还有其他的特点,我们总结为4V。接下来我们来粗略看整个大数据技术的发展脉络,这里我们分成三个阶段来介绍。例如:11.11期间,京东在1秒内的交易额就超过了10亿。金融:多维度体现用户特征,帮助金额机构推荐优质客户。给你家人推荐的内容,也会推荐给你。推荐你喜欢的内容给你。

2025-05-14 09:52:49 429

原创 SparkSQL-数据提取和保存

从给定的user.csv文件中,读入用户数据,过滤掉年龄<18岁的信息,然后把剩余的数据写入mysql数据库中。这里要先去准备mysql数据库。从csv中读入数据到DataFrame。// 读入data/user.csv文件的数据。通过mysql -uroot -p 来登录mysql。在mysql中创建数据表,特别注意字符编码的问题。建立一个.csv文件,然后添加基本数据。dataFrame做数据写入到mysql。读入csv文件到 dataFrame。准备user.csv文件。

2025-05-14 09:51:50 284

原创 SparkSQL操作Mysql(2)

请注意,这里并没没有单独添加spark_core的依赖,因为在spark-sql中已经包含了spark_core。(1)scala-library 是 Scala 语言的基础库,是编写 Scala 程序的必要条件。(2)spark-sql_2.12 提供了 Spark SQL 的功能,用于高效的数据处理和分析。(3)mysql-connector-java 提供了与 MySQL 数据库交互的能力。前面演示了数据的查询,现在来看看添加数据到mysql。我们去创建一个新的数据库,数据表,并插入一条数据。

2025-05-14 09:49:59 308

原创 SparkSQL操作Mysql(1)

rpm -ivh 是 Linux 中用于安装 RPM(Red Hat Package Manager)软件包的命令。若已安装,需要先做卸载MySQL的操作命令是:rpm -e --nodeps mariadb-libs。使用的命令是: mysqld --initialize --user=mysql。查看是否已安装MySQL。-v:表示显示详细(verbose)信息,提供更多安装过程中的输出信息。对应的命令是:mysql -uroot -p。-h:表示在安装过程中显示进度条,以 # 符号表示安装进度。

2025-05-14 09:47:46 775

原创 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 09:45:08 679

原创 自定义分区器(2)

MyPartitioner类继承自Partitioner,实现了numPartitions方法指定分区数量为 3 ,实现getPartition方法,根据球队名称判断分区索引,湖人对应分区 0,火箭对应分区 1,其他球队对应分区 2。2.在main方法中,创建包含球队信息的 RDD,然后调用partitionBy方法并传入自定义分区器MyPartitioner,对 RDD 进行分区,最后将分区后的数据保存到指定路径。("勇士", "info1"),("湖人", "info3"),

2025-05-14 09:41:51 350

原创 自定义分区器-基础

这就类似于 Spark 中的分区,每个分区的数据可以在不同的计算节点上同时进行处理,从而加快整个数据处理的速度。:Spark 能够同时对多个分区的数据进行处理,充分利用集群的计算资源,进而加快作业的执行速度。在 Spark 中,分区是指将数据集按照一定的规则划分成多个较小的子集,每个子集可以独立地在不同的计算节点上进行处理,这样可以实现数据的并行处理,提高计算效率。在 Spark 中,RDD 是数据的集合,它会被划分成多个分区,这些分区可以分布在不同的计算节点上,就像图书馆的书架分布在不同的房间一样。

2025-05-14 09:40:35 857

原创 spark缓存(2)

MEMORY_ONLY_SER:将 RDD 以序列化的 Java 对象形式存储在内存中,相较于 MEMORY_ONLY,序列化后占用的内存空间更小,但读取时需要进行反序列化操作,会带来一定的性能开销。cache:其实是 persist 方法的一种特殊情况,它等价于调用 persist(StorageLevel.MEMORY_ONLY),也就是将数据以非序列化的 Java 对象形式存储在内存中。MEMORY_AND_DISK:优先把 RDD 以 Java 对象的形式存储在 JVM 的内存中。

2025-05-14 09:38:31 475

原创 Spark缓存

第二次调用collect时,因为之前已经调用了cache方法,并且结果已被缓存,所以不需要再次执行计算,直接从缓存中读取数据。通过对比两次计算的耗时,可以明显发现第二次计算耗时会远小于第一次(在数据量较大或计算复杂时效果更显著),这就体现了cache方法缓存计算结果、避免重复计算、提升后续操作速度的作用。当持久化某个RDD后,每一个节点都将把计算的分片结果保存在内存中,并在对此RDD或衍生出的RDD进行的其他动作中重用。这就是没有缓存的效果。时,该RDD将会被缓存在计算节点的内存中,并供以后重用。

2025-05-14 09:37:13 287

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

reduce 用于对 RDD 中的元素进行全局聚合操作,例如计算 RDD 中所有元素的总和、最大值、最小值等。它会触发 Spark 作业的实际执行,对 RDD 中的所有元素进行计数,并将最终的计数结果返回给驱动程序。f: T => Unit:这是一个函数,它接收一个类型为 T 的元素(T 为 RDD 中元素的类型),并对该元素执行相应的操作,但不返回任何值(返回类型为 Unit)。返回值:返回一个包含 RDD 中所有元素的数组,数组元素的类型与 RDD 中元素的类型一致。参数说明:该算子没有参数。

2025-05-14 09:35:25 222

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

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

2025-05-14 09:33:34 656

原创 自定义分区器-基础

当使用 textFile 方法从外部存储(如 HDFS、本地文件系统等)读取文件创建 RDD 时,默认分区数通常由文件的块大小决定。对于 HDFS 文件,默认分区数等于文件的块数。例如,一个 128MB 的文件在 HDFS 上被分成 2 个 64MB 的块,那么创建的 RDD 默认分区数就是 2。在 Spark 里,弹性分布式数据集(RDD)是核心的数据抽象,它是不可变的、可分区的、里面的元素并行计算的集合。RDD 会被划分成多个分区,每个分区就是一个数据集片段,这些分区可以分布在集群的不同节点上。

2025-05-07 11:13:11 407

原创 Linux操作系统命令-复杂命令(2)

ls命令可以查看文件夹下的文件信息,如果某个文件夹下的文件特别多,使用ls命令时,就只能显示后面一部分文件信息,那如果我们希望查看全部的文件信息,要怎么办呢?因为在linux下,我们要去下载安装新的软件时就需要用到它:下载下来的软件大多都是.tar格式,而安装的过程就是解压缩。会把111追加到a.txt这个文件中。ls 用来显示文件夹下的文件信息,more用来翻页,而 | 就可以把前一个的结果作为输入传递给more。多次运行也只有一条数据。-c 建立一个压缩文件,把多个文件或者文件夹压缩到一个新的文件中。

2025-05-07 09:19:10 434

原创 Linux操作系统命令-复杂命令

说明:如果源文件和目标文件在同一个目录下,就是重命名,否则就是。它的功能类似如cat,不过它会翻页的形式显示,适合大文件查看。复制一份得到file2.t x t。复制和移动都分为文件和文件夹,具体的命令是cp和mv。3. more -tail:查看文件的结尾部分的内容。创建一个空的文件: touch file1.txt。例如:more /etc/sudo.conf。例如:cat /etc/host.conf。格式: cp 源文件 目标文件。示例: 把file1.txt。格式:mv 源文件 目标文件。

2025-05-07 09:17:56 144

原创 Spark集群搭建-Standalone模式

把第一步上传的安装包解压到/opt/module下(也可以自己决定解压到哪里)。对应的命令是:tar -zxvf spark-3.3.1-bin-hadoop3.tgz -C /opt/module。进入/opt/module/把解压的内容重命名一下,mv spark-3.1.1-bin-hadoop3.2/ spark-standalone。Spark 的 Standalone 模式是一种独立的集群部署模式,自带完整服务,可单独部署到一个集群中,无需依赖任何其他资源管理系统。

2025-05-07 09:05:16 151

原创 MapReduce架构-打包运行

从 Java 7 开始,为了简化版本号的表示,Oracle 开始采用新的命名方式,将 1.x 改为 x。从 Java 9 开始,版本号的命名方式完全统一为 x,例如 Java 9、Java 11、Java 17 等,不再使用 1.x 的形式。我们集群上安装的java环境是1.8的,那么我们生成的代码也必须是这个版本的,否则,就会无法运行。我们集群上安装的java环境是1.8的,那么我们生成的代码也必须是这个版本的,否则,就会无法运行。在上面的代码中,我们的程序只能完成固定目录下的功能。

2025-05-07 08:57:15 1370

原创 MapReduce架构-序列化

下面我们来看一个例子:通过代码来定义一个类,并创建它的一个对象,把这个对象保存到文件中(序列化),然后再写代码读取这个文件并还原回来。// 2. 使用ObjectInputStream对象中的readObject方法,读取文件中的对象。序列化就是把内存中的对象,转换成字节序列(或其他数据传输协议)以便于存储到磁盘(持久化)和网络传输。反序列化就是将收到字节序列(或其他数据传输协议)或者是磁盘的持久化数据,转换成内存中的对象。序列化可以存储“活的”对象,可以将“活的”对象发送到远程计算机。

2025-05-07 08:54:49 251

原创 Yarn-tool接口

org.apache.hadoop.util.Tool 是 Apache Hadoop 框架里的一个接口,其用途是协助开发可通过命令行运行的 Hadoop 应用程序。ToolRunner 是 Hadoop 提供的一个实用类,可用于运行实现了 Tool 接口的应用程序。run(String[] args):此方法为应用程序的主要执行逻辑,接收命令行参数,返回一个整数代表执行结果(通常 0 表示成功,非 0 表示失败)。2.run 方法会打印出接收到的命令行参数,你可以在此添加自己的业务逻辑。

2025-05-07 08:52:18 757

原创 Spark-core-RDD入门

Resilient Distributed Dataset 叫做弹性分布式数据集,是Spark中最基本的数据抽象,是分布式计算的实现载体,代表一个不可变,可分区,里面的元素并行计算的集合。类用于配置 Spark 应用程序的各种参数。通过 SparkConf 类,你可以设置应用程序的名称、运行模式(如本地模式、集群模式)、资源分配(如内存、CPU 核心数)等。- Distributed: 分布式存储的,表示数据是存放在不同的机器上的。:集合中的数据可以被并行的计算处理,每个分区数据被一个Task任务处理。

2025-05-07 08:50:20 644 2

原创 如何在idea中写spark程序

在项目根目录下建立文件夹input,并穿件两个文本文件:word1.txt, word2.txt。的版本信息,说明安装成功。它的功能是wordcount的功能:从指定的文件夹中去读取文件,并做词频统计。IDEA中,默认是不支持编写Scala的,需要额外配置一个插件。如果这里没有看到Scala类的选项,就去检查第2步。添加完成之后,刷新Maven,它会帮助我们去下载依赖。使用Maven创建项目,并在pom.xml文件中配置相关的依赖。在Idea中安装插件,使得Idea中可以编写scala代码。

2025-04-28 19:55:00 1204

原创 如何搭建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-04-28 19:48:20 295

原创 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-04-25 15:32:04 299

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

Spark可以与Hadoop生态系统无缝集成,例如,Spark可以使用HDFS作为数据存储层,可以与Hive共享元数据,可以与YARN进行资源管理等。例如,Spark Streaming可以处理实时数据流,Spark SQL可以进行SQL查询,Spark MLlib可以进行机器学习,Spark GraphX可以进行图计算。:Hadoop的架构较为复杂,需要分别搭建HDFS和MapReduce,且MapReduce的执行过程较为繁琐,需要经过多个阶段(如Shuffle和Sort),导致延迟较高。

2025-04-23 11:11:54 1096 1

原创 关于hadoop和yarn的问题

YARN(Yet Another Resource Negotiator)是 Hadoop 2.0 引入的资源管理平台,其核心功能是将资源管理与作业调度/监控分离,支持多计算框架(如 MapReduce、Spark 等)运行在同一个集群中,提高资源利用率和系统扩展性。

2025-04-18 15:02:03 465 1

原创 mapreduce的工作原理

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

2025-03-31 19:33:58 454

原创 Hadoop集群常用命令

启动所有Hadoop服务。# 停止所有Hadoop服务。# 列出所有运行中的应用程序。# 查看MapReduce作业状态。## MapReduce作业命令。# 检查YARN节点状态。2. **文件权限和所有权**# 查看集群资源使用情况。# 提交MapReduce作业。1. **平衡HDFS数据**1. **启动/停止集群**# 检查HDFS一致性。2. **检查集群状态**# 检查HDFS状态。# 检查集群健康状态。1. **基本文件操作**# 查看应用程序日志。2. **检查文件系统**

2025-03-31 19:31:38 529

原创 finalshell的配置

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

2025-03-07 09:26:49 452

原创 linux常见操作命令

ls命令可以查看文件夹下的文件信息,如果某个文件夹下的文件特别多,使用ls命令时,就只能显示后面一部分文件信息,那如果我们希望查看全部的文件信息,要怎么办呢?因为在linux下,我们要去下载安装新的软件时就需要用到它:下载下来的软件大多都是.tar格式,而安装的过程就是解压缩。会把111写入a.txt这个文件中,把之前的内容删除掉。但是,在linux里,这不能使用鼠标操作,需要用到显示文件的命令。ls 用来显示文件夹下的文件信息,more用来翻页,而 | 就可以把前一个的结果作为输入传递给more。

2025-03-03 19:32:58 312

原创 vi常见操作命令

命令模式:在这个模式下,所敲的按键编辑器都理解为命令,以命令来驱动执行不同的功能。当我们通过VI命令第一次打开文件的时候,进入的就是命令模式。vi编辑器有三种工作模式,分别是命令模式,编辑模式,底线模式。(2)按下o:进入到编辑输入模式后,在当前行的后面添加一行空行(当前行的下一行)2. 如果文件已经存在,此时就打开这个文件,进入命令模式。从命令模式切换到底线命令模式,输入: 进入底线命令模式。(1)按下i: 进入编辑模式,定位到当前光标前面。(3)在输入模式下,按下ESC退回到命令模式。

2025-03-03 19:30:17 194

原创 配置虚拟机IP

linux中,ip地址是写在配置文件(/etc/sysconfig/network-scripts/ifcfg-ens33)中,这里使用 vi 编辑器去修改即可!如果不进行设置,每次启动机器时都可能是随机的IP,不方便我们后续操作。命令如下:vi /etc/sysconfig/network-scripts/ifcfg-ens33。注意:这里的第三个部分的10并不是固定的,我们自己可以约定,但是约定之后就要固定下来。让所有的vm配置的虚拟机使用NAT时,它们的网段都是一致的。(3)设置虚拟机的IP。

2025-03-03 19:26:58 415

原创 安装配置虚拟机教学

虚拟机安装配置对新手来说还是太吃操作了,有没有更简单的方法推荐一下,有的兄弟,有的,现在我来推荐一套更简单快捷的操作。问下在此处可以找到分享文件:finalshell_install.exe等链接:https://pan.xunlei.com/s/VOJXe-jE0YiFoh1EdnaJDyxhA1#提取码:5yex复制这段内容后打开迅雷,查看更方便需要用到以下1. CentOS-7-x86_64-Minimal-2009.iso : linux安装文件。用来安装系统。

2025-02-20 17:21:28 491

原创 Scala中的泛型

List是数据类型,表示一个列表。[Int]表示泛型,它约定列表中每一个元素都是Int类型。2.泛型在编译时生效,在运行不可见,最后产生的class文件中是没有泛型的。(2) 名称合法就行,没有固定的,一般用T(Type)在Scala中,用[]表示。在Java中用<>表示。类型参数 ---- 泛型(数据类型是变化的)1. 与数据类型的区别。

2024-12-12 08:36:26 473

原创 Scala的隐式对象

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

2024-12-10 17:06:56 125

原创 Scala正则表达式03

【代码】Scala正则表达式03。

2024-12-03 17:08:50 484

原创 Scala正则表达式02

a+` 可以匹配 `a`、`aa`、`aaa` 等,但不能匹配空字符串;例如,`a` 匹配字符 `a`,`[abc]` 匹配 `a`、`b` 或者 `c` 中的任意一个字符,`[a-z]` 匹配从 `a` 到 `z` 的任意一个小写字母。例如,`(ab)+` 表示 `ab` 这个组合至少出现1次,如 `ab`、`abab`、`ababab` 等符合要求。例如,`^` 表示匹配行首,`$` 表示匹配行尾。`^abc` 表示匹配以 `abc` 开头的行,`abc$` 表示匹配以 `abc` 结尾的行。

2024-12-03 16:17:01 484

原创 Scala中的正则表达式01

【代码】Scala中的正则表达式。

2024-12-03 16:13:05 593

原创 用Scala来解决成绩排名的相关问题

1.计算每个同学的总分和平均分。2.按总分排名,取前三名。3.按单科排名,取前三名。

2024-11-26 17:00:07 565

原创 Scala的Array多维数组

最典型的多维数组就是二维数组,类似于表格。从一维数组转化得来:数组. grouped ()直接定义:Array.ofDim (x,y)

2024-11-19 15:05:30 628

原创 Scala的Array(1)

Scala的Array表示长度不可变的数组,若需要定义可变数组需要倒包。

2024-11-14 09:23:01 516 1

空空如也

空空如也

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

TA关注的人

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