自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spark-core-RDD入门

1. 创建RDD - 从集合创建:在Spark Shell中,可以通过 parallelize 方法从本地集合创建RDD。例如: scala val data = List(1, 2, 3, 4, 5)val rdd = sc.parallelize(data) - 从外部数据源创建:可以从文件系统(如HDFS)读取数据创建RDD。例如读取本地文本文件: scala val textRDD = sc.textFile("file:///path/to/file.txt")

2025-05-16 14:29:56 211

原创 自定义分区器-基础

1. 首先定义了一个 CustomPartitioner 类,继承自 Partitioner ,实现了 numPartitions 方法来返回分区数量,以及 getPartition 方法根据键的奇偶性确定分区。这样就完成了一个简单的自定义分区器的基础使用,你可以根据实际需求修改分区逻辑来适应不同的业务场景。3. 使用 partitionBy 方法将自定义分区器应用到RDD上,指定分区数量为2。# 根据键的奇偶性确定分区,奇数在分区0,偶数在分区1。# 打印每个分区的数据。

2025-05-16 14:28:59 402

原创 Zookeeper

数据多了之级),这个时候就出现了Spark技术,spark经常和hadoop来对比,更准确是和mapReduce进行对比,因为spark本身也是一个计算框架。spark是基于内存的计算,mapReduce是基于磁盘的计算。版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。进入到我们安装yarn的主机,通过命令来关闭掉yarn和historyServer,然后再重启。大数据不止有数量大这个显著的特点,还有其他的特点,我们总结为4V。电商推荐:熟人推荐。

2025-05-16 14:27:20 261

原创 spark数据压缩

在 Apache Spark 中,数据压缩是一种重要的优化手段,可以有效减少存储空间和网络传输开销,从而提升作业的执行效率。• 选择合适的压缩算法:根据数据的特点和作业类型选择合适的压缩算法。• 提高 I/O 性能:压缩后的数据传输量减少,从而加快网络和磁盘 I/O 操作的速度。• 测试压缩效果:在实际应用中,建议对不同压缩格式进行测试,以找到最适合的压缩方案。• Gzip:压缩比高,但压缩和解压缩速度较慢,适合存储空间有限的场景。• LZ4:压缩速度和压缩比俱佳,适合需要平衡压缩效率和速度的场景。

2025-05-14 09:38:28 428

原创 关于yarn和Hadoop

• ApplicationMaster (AM):每个应用程序的主节点,负责向 ResourceManager 申请资源,并与 NodeManager 协作启动和管理任务。• MapReduce 运行在 YARN 上:MapReduce 是 YARN 上的一个应用程序,由 YARN 调度和管理。• 资源隔离:通过 YARN 的资源管理,可以实现不同应用程序之间的资源隔离,避免资源竞争。• ResourceManager (RM):管理整个集群的资源,负责资源的分配和调度。

2025-05-14 09:35:45 360

原创 RDD-自定义分区器

在 Apache Spark 中,自定义分区器可以让你更灵活地控制 RDD 的分区逻辑,以满足特定的业务需求或优化性能。• 分区器的唯一性:通过 equals 和 hashCode 方法确保分区器的唯一性,这在某些操作(如 join)中非常重要。• 键的类型:自定义分区器需要明确支持的键类型。通过自定义分区器,你可以根据业务需求灵活地控制数据的分布,从而优化 Spark 的计算性能和资源利用率。假设我们有一个键值对 RDD,键是字符串,我们希望根据键的长度将数据分配到不同的分区。

2025-05-14 09:31:56 246

原创 RDD分区和分区器

分区是 RDD 数据的逻辑分割,每个分区包含一部分数据,并且分区的数量决定了数据在集群中的并行度。• 选择合适的分区器:根据数据的分布和查询需求选择合适的分区器。每个分区是一个不可分割的数据块,Spark 会将每个分区分配到不同的节点上进行并行计算。HashPartitioner 是 Spark 默认的分区器,它根据键的哈希值对数据进行分区。每个分区包含一个键的范围,分区内的数据是有序的。• 容错性:分区是 RDD 的基本单位,Spark 可以通过重新计算丢失的分区来恢复数据。

2025-05-14 09:18:08 277

原创 在spark—shell中写代码

Spark Shell 提供了一个 REPL(Read-Eval-Print Loop)环境,支持 Scala(默认)、Python(通过 PySpark Shell)和 R(通过 SparkR Shell)。虽然 Spark Shell 是交互式的,但你也可以将代码保存到文件中,然后在 Spark Shell 中加载和运行。启动后,你会看到一个交互式提示符,例如 scala>(Scala)、>>>(Python)或 >(R)。在 Spark Shell 中,你可以直接输入代码并执行。

2025-05-14 09:13:20 413

原创 MySQL数据库配置

通过以上步骤,您可以完成 MySQL 的安装与配置,并根据实际需求进行优化。脚本进行初始安全设置,包括设置 root 密码、删除匿名用户等。对于 Windows 系统,建议下载 MSI 版本,便于安装。配置 MySQL 时,输入 root 用户密码,并记住该密码。选择安装类型,建议选择“Custom”,并勾选需要的组件。在 Linux 系统中,通常在安装过程中自动完成初始化。按照提示安装依赖软件,然后继续安装 MySQL。初始化完成后,会生成随机密码,记录该密码。:为应用程序创建专用用户,并限制其权限。

2025-05-14 09:11:37 509

原创 sparkSQL基本使用

Spark SQL 支持多种数据源,包括 Hive、Parquet、JSON、CSV 等。要使用 SQL 查询,需要先将 DataFrame 注册为临时视图(Temporary View),然后使用 spark.sql() 方法执行 SQL 查询。以下是 Spark SQL 的基本使用方法,包括启动 Spark SQL、创建 DataFrame、执行 SQL 查询以及保存结果等。除了 SQL 查询,Spark SQL 也支持 DataFrame API,可以直接对 DataFrame 进行操作。

2025-05-14 09:10:51 423

原创 RDD-数据清洗

在 Apache Spark 中,数据清洗(Data Cleaning)是数据预处理的重要步骤,尤其是在处理真实世界的数据时,数据往往存在缺失值、重复值、格式错误、异常值等问题。RDD(Resilient Distributed Dataset)作为 Spark 的基本数据结构,提供了丰富的转换算子(Transformation)和行动算子(Action),可以高效地完成数据清洗任务。• 删除缺失值:使用 filter() 算子删除包含缺失值的记录。// 将字符串转换为数字(忽略无法转换的值)

2025-05-14 09:08:53 248

原创 Spark缓存—cache

在 Apache Spark 中,缓存(Cache)是一种优化手段,用于将中间计算结果存储在内存(或磁盘)中,以便后续重复使用,从而避免重复计算,提高作业的执行效率。cache() 是 Spark 中最简单的缓存方法,它会将 RDD 数据存储到内存中,使用默认的存储级别(MEMORY_ONLY)。◦ MEMORY_AND_DISK_SER:将 RDD 以序列化的 Java 对象形式存储在内存中,如果内存不足,则存储到磁盘中。• 存储级别:默认将数据存储在内存中,以反序列化的 Java 对象形式存储。

2025-05-14 09:05:11 388

原创 RDD中行动算子

• 使用场景:当需要将整个 RDD 的数据拉取到驱动程序中进行进一步处理时(注意:如果 RDD 很大,可能会导致内存溢出)。• 作用:对 RDD 中的元素进行归并操作,使用函数 f 将两个元素合并为一个,最终返回一个结果。• 作用:将 RDD 中的所有元素收集到驱动程序中,并以数组的形式返回。• 作用:将 RDD 中的元素保存到指定的文件路径中,每个元素占一行。• 作用:将 RDD 中的元素以对象的形式序列化并保存到指定路径。• 使用场景:对 RDD 的每个元素进行操作,但不返回结果。

2025-05-14 09:02:49 393

原创 Spark缓存persist

**MEMORY_ONLY_SER**:把数据以序列化的形式存储在 JVM 内存中,相较于反序列化形式,占用内存更少,但读取时需要反序列化,会增加 CPU 开销。- **缓存的触发**:`persist` 方法只是标记 RDD 或 DataFrame 需要被缓存,真正的缓存操作是在第一次行动操作触发时进行的。- **MEMORY_AND_DISK_SER**:先尝试将数据以序列化的形式存储在 JVM 内存中,内存不够时,把多余的分区存到磁盘。- **DISK_ONLY**:把数据存储在磁盘上。

2025-05-14 09:00:01 309

原创 RDD转换算子

**功能**:返回在第一个 RDD 中出现但不在第二个 RDD 中出现的元素。- **功能**:将键值对 RDD 中相同键的值分组到一个迭代器中。- **功能**:将每个元素通过函数 func 进行转换。- **功能**:将两个 RDD 合并成一个新的 RDD。- **功能**:过滤出满足函数 func 条件的元素。- **功能**:对两个键值对 RDD 进行内连接操作。- **功能**:返回两个 RDD 的交集。- **功能**:对相同键的值进行聚合操作。### 3. 键值对转换算子。

2025-05-14 08:57:52 384

原创 Yarn—tool接口

此方法用来设置工具运行时的 Hadoop 配置。- 这是工具的核心执行方法,接收命令行参数数组 `args`,并返回一个整数值表示工具的执行结果。为了方便运行实现了 `Tool` 接口的类,Hadoop 提供了 `ToolRunner` 类。- **资源管理工具**:你可以开发自定义工具,借助 `YARN - Tool` 接口来管理 YARN 集群中的资源,比如查看队列状态、调整资源分配等。- **作业调度工具**:实现一个工具来提交、监控和管理 YARN 上的作业,例如批量提交作业、查看作业进度等。

2025-05-14 08:54:09 432

原创 RDD入门基础

**宽依赖**:多个子 RDD 的分区会依赖同一个父 RDD 的分区,例如 `groupByKey`、`reduceByKey` 操作产生的依赖就是宽依赖。- **窄依赖**:每个父 RDD 的分区最多被一个子 RDD 的分区使用,例如 `map`、`filter` 操作产生的依赖就是窄依赖。- **转换操作**:转换操作会生成一个新的 RDD,它是惰性执行的,即不会立即执行,只有在遇到行动操作时才会触发计算。- **map**:对 RDD 中的每个元素应用一个函数,返回一个新的 RDD。

2025-05-14 08:51:31 285

原创 Spark的Standalone模式

对应的命令是: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 模式是一种独立的集群部署模式,自带完整服务,可单独部署到一个集群中,无需依赖任何其他资源管理系统。要布置standalone模式,需要准备多台机器(linux,ip设置,能ping 百度),免密互联。

2025-05-14 08:48:26 135

原创 算子有几类

• reduceByKey:对 RDD 中的每个键的所有值进行归并操作,返回一个新的 RDD。• mapPartitions:对 RDD 的每个分区应用一个函数,返回一个新的 RDD。• groupByKey:对 RDD 中的每个键的所有值进行分组,返回一个新的 RDD。• flatMap:将 RDD 中的每个元素映射为多个元素,返回一个新的 RDD。• mapValues:对 RDD 中的每个值应用一个函数,返回一个新的 RDD。• map:对 RDD 中的每个元素应用一个函数,返回一个新的 RDD。

2025-05-07 10:18:43 339

原创 怎么理解RDD中的算子

在 Apache Spark 中,RDD(Resilient Distributed Dataset)是分布式数据集的基本抽象,而**算子(Operators)**是用于对 RDD 进行操作的函数。• rdd2.filter(lambda x: x > 5) 是另一个转换操作,返回一个新的 RDD rdd3。• rdd.map(lambda x: x * 2) 是一个转换操作,返回一个新的 RDD rdd2。• map:对 RDD 中的每个元素应用一个函数,返回一个新的 RDD。

2025-05-07 10:17:20 260

原创 RDD有哪几种创建方式

通过对已有的RDD执行转换操作(如`map`、`filter`、`flatMap`等),可以生成新的RDD。通过`parallelize()`方法将本地集合转换为RDD。这种方式适合在测试或处理小规模数据时使用,它能将本地的Python列表、Java数组等集合数据并行化到集群上。可以从多种外部存储系统中读取数据来创建RDD,这些存储系统包括但不限于本地文件系统、Hadoop分布式文件系统(HDFS)、Amazon S3等。# 对rdd1进行map转换操作,生成新的RDD。### 从其他RDD转换创建。

2025-05-07 08:56:36 430

原创 什么是RDD

常见的转换操作有`map`、`filter`、`union`、`join`等。- **对已有的RDD进行转换操作**:通过对一个或多个已有的RDD执行转换操作,如`map`、`filter`、`flatMap`等,生成新的RDD。- **容错弹性**:RDD具有容错机制,当某个节点上的数据丢失时,可以根据RDD的 lineage(血统)信息,通过重新计算的方式恢复丢失的数据。- **分布式**:RDD的数据分散存储在集群的多个节点上,每个节点负责处理自己所存储的数据,从而实现并行计算,提高处理效率。

2025-05-07 08:54:49 312

原创 如何在idea中写spark程序。

打开IntelliJ IDEA,依次点击`File` -> `Settings`(Windows/Linux)或`IntelliJ IDEA` -> `Preferences`(Mac),在`Plugins`中搜索`Scala`并安装。- 在左侧选择`Maven`,如果需要使用Scala,确保勾选`Create from archetype`,并选择合适的Scala Maven原型,如`org.scala-tools.archetypes:scala-archetype-simple`。

2025-04-28 19:38:01 536

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

**安装并配置Hadoop集群**:要确保集群里已经装好了Hadoop集群,其中涵盖HDFS和YARN,同时各个节点之间能够实现无密码SSH登录。注意要依据实际情况对`JAVA_HOME`、`HADOOP_CONF_DIR`和`SPARK_MASTER_HOST`等参数进行修改。从Spark官方网站下载适配你Hadoop版本的Spark安装包,之后解压到所有节点的指定目录。要是作业能正常完成,就表明Spark YARN模式的集群搭建成功了。- **安装Java环境**:所有节点都得安装好Java环境。

2025-04-28 19:35:29 473

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

**更灵活的计算模型**:Spark不仅支持批处理,还支持实时计算(通过Spark Streaming)和交互式查询(通过Spark SQL)。- **容错性依赖内存和RDD特性**:Spark的容错机制主要依靠RDD的血统机制(lineage)。- **容错性高**:Hadoop的容错机制主要依靠HDFS的副本机制。在大数据时代,数据量呈爆炸式增长,无论是Hadoop还是Spark,其设计初衷都是为了应对海量数据的存储、管理和分析,帮助企业和组织从海量数据中提取有价值的信息。

2025-04-23 11:08:56 474

原创 Hadoop

任务管理:负责启动和管理应用程序的任务,并确保任务的正常执行。日志管理:负责管理应用程序的日志文件,确保日志文件的存储和访问。ApplicationMaster(AM):资源请求:向 ResourceManager 请求资源,获取足够的资源来运行应用程序的任务。YARN 是 Hadoop 的资源管理框架,它负责管理和调度集群中的计算资源,并为各种分布式应用程序提供资源分配和任务调度服务。YARN 提供了资源管理和任务调度功能,确保集群资源的高效利用和应用程序的顺利运行。3.yarn的三大组件及各自作用。

2025-04-18 15:20:39 362

原创 mapreduce的工作原理

**Reduce 阶段**:Reduce 任务接收每个分区的数据,将相同单词的出现次数累加,得到最终的 `<单词, 总出现次数>` 结果,如 `<Hello, 2>`、`<World, 1>`。- **分区**:Shuffle 阶段会对 Map 任务输出的中间键值对进行分区操作,默认情况下,根据键的哈希值将键值对分配到不同的分区中,每个分区对应一个 Reduce 任务。- **Shuffle 和排序**:根据单词的哈希值将键值对分区,同一单词的键值对会被分配到同一个分区,并在分区内按单词排序。

2025-03-31 19:31:08 474

原创 hadoop 集群的常用命令

/path/to/your/jar/file.jar` 是包含 MapReduce 作业代码的 JAR 文件路径,`main_class` 是作业的主类名,`input_path` 是输入数据在 HDFS 上的路径,`output_path` 是作业输出结果在 HDFS 上的路径。此命令会将 HDFS 上的文件下载到本地指定的位置。将 `/path/to/directory` 替换为你要查看的实际目录路径,该命令会列出该目录下的所有文件和子目录的详细信息,包括权限、所有者、大小和修改时间等。

2025-03-31 19:27:31 495

原创 vi常见操作命令

替换操作可以使用`:s/old/new/g`,其中`old`是要替换的旧字符串,`new`是新字符串,`g`表示全局替换。- 在命令模式下输入`i`(在光标前插入)、`a`(在光标后插入)、`o`(在光标所在行的下一行插入新行并进入编辑模式)等命令可以进入编辑模式,此时可以输入和编辑文本。- 在命令模式下,使用`h`(向左移动一个字符)、`j`(向下移动一行)、`k`(向上移动一行)、`l`(向右移动一个字符)来移动光标。- 在命令模式下,`x`删除光标所在位置的字符,`dd`删除光标所在的整行。

2025-03-03 19:32:10 261

原创 VM+CentOS虚拟机

进入CentOS虚拟机,使用vi编辑器修改网络配置文件,如`/etc/sysconfig/network-scripts/ifcfg-ens33`(文件名可能因虚拟机网络适配器不同而有所差异)。- 打开VMware Workstation Pro,选择“新建虚拟机”,按照向导提示选择“安装程序光盘映像文件(ISO)”,并选择下载的CentOS镜像文件。- 在VMware中,点击“编辑”→“虚拟网络编辑器”,选择VMnet8并进行相关设置。**一、VM+CentOS虚拟机配置**

2025-03-03 19:29:45 425

原创 Linux常用指令

例如`tar -cvf archive.tar files_to_archive`(打包),`tar -xvf archive.tar`(解压)。常用选项有`-a`(列出所有文件,包括隐藏文件)、`-l`(显示文件的详细信息)等。- `rm`:删除文件或目录。使用`-r`选项删除目录,`-f`选项强制删除不提示。可通过`-n`选项指定行数,如`head -n 20 file.txt`。- `chown`:修改文件或目录的所有者。- `less`:与`more`类似,但功能更强大,支持搜索等操作。

2025-03-03 19:26:20 197

原创 如何安装配置虚拟机

**Microsoft Hyper - V**:仅适用于Windows系统(Windows 10专业版及以上),集成在操作系统中,对于Windows用户来说比较方便,如果主要在Windows环境下使用虚拟机可以考虑。- 在创建好的虚拟机设置中,选择“CD/DVD(SATA)”选项,在右侧选择“使用ISO映像文件”,浏览并选择下载好的操作系统ISO文件。- 创建虚拟硬盘,选择硬盘类型(如VDI、VHD等),并确定硬盘大小和存储方式(如动态分配或固定大小)。

2025-02-20 17:16:10 423

原创 Scala泛型的特质

/泛型特质.X是泛型名称,可以更=更改。//定义一个类去实现特质。

2024-12-12 09:25:32 514

原创 Scala的泛型

/泛型特质.X是泛型名称,可以更=更改。//定义一个类去实现特质。

2024-12-12 08:39:23 411

原创 Scala的正则表达式2

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-11 20:55:51 211

原创 Scala正则表达式1

排除字符集 [^ ] [^ ] 开头加 ^,匹配排除字符 [^abc],文本 d [^abc] 匹配除 a、b、c 之外的字符,如 d。方括号 [ ] [ ] 定义字符集,匹配其一 [abc],文本 a、b 或 c [abc] 匹配 a、b 或者 c。\w 等价[a-zA-Z0-9_],匹配相关字符 \w+,文本abc、abc123、abc_ \w+匹配对应字符串。\W 等价[^a-zA-Z0-9_],匹配其他 \W,文本& \W匹配非字母数字下划线字符,如&

2024-12-11 20:53:44 443

原创 Scala的正则表达式3

/在如下字符串中 查找 满足正则表达式要求的内容。非贪婪模式,加在量词的后面。// 3.第二个数字是3-9的数.// 正则匹配默认是贪婪模式的。// 2.第一个数字是1.// 1.11位数字.// 找全部的手机号。scala正则表达式开发语言。发布于2024-12-03。贪婪模式与非贪婪模式。

2024-12-11 20:52:51 500

原创 Scala的隐式对象

/ 格式:implicit object。getConn // 采用默认值。// 作用:给函数的默认参数提供隐式值。格式:implicit object。作用:给函数的默认参数提供隐式值。scalaandroid开发语言。发布于2024-12-10。

2024-12-11 20:51:55 289

原创 使用 Maven 来构建 Scala

src/main/resources/archetype-resources 目录下的内容大体上认为就是生成目标项目的时候,生成的目标项目会拥有的东西,没做裁剪之前,这些内容都是根据 currency-webapi-with-scala 的内容“拷贝(Copy)”过来的,我们会对这个符合 Maven 项目结构目录下的内容进行裁剪。关于基于 Maven 的 Scala 项目的依赖治理以及 spring-boot-starter-scala,我们暂时就介绍到这里。

2024-12-11 20:49:54 906

原创 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。// (1) 可以有多个。

2024-12-11 20:47:29 326

空空如也

空空如也

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

TA关注的人

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