自定义博客皮肤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)
  • 收藏
  • 关注

原创 spark缓存cache

Spark提供了多种缓存级别,通过 StorageLevel 来设置,如 MEMORY_ONLY (默认,仅存储在内存中)、 MEMORY_AND_DISK (优先存储在内存,内存不足时存储到磁盘)等。在Spark中, cache 是一种用于将数据存储在内存中的机制,以提高后续对相同数据的访问效率,避免重复计算。- 当数据发生变化或不再需要时,应及时清除缓存,以释放内存资源,可使用 unpersist 方法清除缓存。- 缓存的数据可能会占用大量内存,要合理评估内存使用情况,避免内存溢出。

2025-05-14 08:59:37 203

原创 RDD自定义分区器案例

2. 在 main 方法中,首先创建了模拟的订单数据RDD,然后使用自定义的 UserIdPartitioner 对订单数据进行分区。3. 最后通过 mapPartitionsWithIndex 操作,遍历每个分区的数据,并打印出每个分区中用户ID和订单ID的信息。这样就实现了根据用户ID对订单数据进行自定义分区的功能,方便后续对同一用户的订单进行聚合、分析等操作。// 模拟订单数据,每个元素是 (用户ID, 订单ID) 的形式。// 使用自定义分区器对订单数据进行分区。// 打印每个分区的数据。

2025-05-14 08:56:28 427

原创 RDD自定义分区器

上述代码中, CustomPartitioner 根据键的哈希值对分区数量取模来确定分区。在 main 方法中,对包含键值对的RDD应用了自定义分区器,然后打印出分区后的数据。在Spark中自定义分区器,能够按照特定的逻辑对RDD进行分区,这在处理一些有特殊分区需求的数据时非常有用。1. 使用自定义分区器:在创建RDD或对RDD进行转换时,可以使用 partitionBy 方法应用自定义分区器。通过自定义分区器,可以根据业务需求灵活地对RDD进行分区,提高数据处理的效率。// 返回分区的数量。

2025-05-14 08:55:29 423

原创 RDD分区和分区器

RangePartitioner 则是根据键的范围将数据划分到不同的分区,适用于数据按照键有序分布的情况。- 分区数量:可以在创建RDD时指定分区数量,也可以通过 repartition 或 coalesce 等操作来改变分区数量。同时,合理的分区可以减少数据在网络中的传输,提高数据的局部性。RDD分区是将RDD中的数据分散存储在不同的分区中,以实现数据的并行处理。通过对RDD进行合理的分区和选择合适的分区器,可以优化Spark作业的性能,提高数据处理的效率和资源利用率。

2025-05-14 08:54:31 203

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

用于在文件中搜索指定的字符串,并显示包含该字符串的行。当结合正则表达式和其他参数时,功能更强大。find 命令查找所有 .bak 文件,通过 -print0 以空字符分隔输出, xargs 通过 -0 接收空字符分隔的输入,并将其作为参数传递给 rm -f 命令来删除文件。用于在指定目录及其子目录中查找文件或目录,支持多种条件筛选。文本处理工具,可按指定规则对文本进行格式化输出、统计等操作。用于将标准输入的数据转换为命令行参数。上述命令以冒号为分隔符,将第四列(组ID)作为数组索引,统计每个组的出现次数。

2025-05-14 08:52:46 216

原创 Spark集群搭建-Standalone模式

2. 在从节点上执行 /opt/spark/sbin/start-slave.sh spark://master-node-ip:7077 启动Slave,其中 master - node - ip 是主节点的IP。1. 从Spark官网(https://spark.apache.org/downloads.html)下载适合的Spark版本,如 spark-3.3.2-bin-hadoop3.tgz。2. 将下载的压缩包上传到集群各节点,解压到指定目录,如 /opt/spark。

2025-05-14 08:52:03 312

原创 自定义分区器-基础

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

2025-05-14 08:51:13 244

原创 RDD案例 数据清洗

好呀,以下是一个用RDD进行数据清洗的简单案例,这里以处理一个包含学生成绩数据的文本文件为例,文本文件每一行数据格式为 “学生ID,科目,成绩”,现在要清洗掉成绩数据异常(比如成绩不在0到100范围内)的数据。你也可以根据实际需求对这个案例进行修改和扩展哦,比如从其他数据源读取数据,或者进行更复杂的数据清洗操作。// 清洗数据,过滤掉成绩不在0到100范围内的数据。// 将清洗后的数据转换回字符串形式。// 将每一行数据按逗号分割成数组。// 创建Spark配置和上下文。// 打印清洗后的数据。

2025-05-14 08:50:04 150

原创 自定义分区器-基础

这个方法接收一个键(对于键值对RDD),根据键计算出该键应该属于哪个分区,返回一个0到 numPartitions - 1 之间的整数,表示分区的索引。在Spark中,自定义分区器可以让你根据特定的逻辑将数据划分到不同的分区中,以提高数据处理的效率和性能。这个抽象类定义了分区器的基本方法。自定义分区器可以根据具体的业务需求和数据特点来设计,以实现更高效的数据分布和处理。该方法返回分区器的分区数量,这个数量决定了数据将被划分成多少个分区。// 这里使用键的哈希值对分区数量取模。

2025-05-14 08:48:07 315

原创 RDD算子-转换算子

reduceByKey(func) :对键值对类型的RDD,按照键进行分组,并使用指定的函数 func 对每个组内的值进行聚合操作,返回一个新的键值对RDD。- join(otherRDD) :对两个键值对类型的RDD进行内连接操作,根据相同的键将两个RDD中的元素连接起来,返回一个新的RDD,包含连接后的键值对。- map(func) :对RDD中的每个元素应用函数 func ,返回一个新的RDD,新RDD中的元素是原RDD元素经过函数处理后的结果。

2025-05-14 08:47:25 252

原创 RDD算子-行为算子

collect :将RDD中的所有元素收集到驱动程序中,以数组的形式返回。- foreach(func) :对RDD中的每个元素执行给定的函数 func。- reduce :通过指定的函数对RDD中的元素进行聚合操作,返回一个最终结果。在Spark的弹性分布式数据集(RDD)中,行为算子是一类用于触发实际计算并返回结果或执行特定操作的算子。- saveAsTextFile(path) :将RDD中的元素以文本文件的形式保存到指定路径。- first :返回RDD中的第一个元素。

2025-05-14 08:46:48 216

原创 关于yarn和hadoop

YARN是Hadoop的资源管理系统,它将资源管理和任务调度从MapReduce中分离出来,使得Hadoop可以支持多种计算框架,如Spark、Flink等。YARN是Hadoop生态系统的核心组件之一,它为Hadoop集群提供了高效的资源管理和调度功能。HDFS提供数据存储,YARN负责资源管理和任务调度,MapReduce则是基于YARN运行的一种计算框架。同时,YARN的出现也使得Hadoop集群能够更好地支持多种不同类型的计算任务,提高了集群的资源利用率和灵活性。YARN负责集群资源的管理和调度。

2025-05-13 22:06:43 162

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

进入Spark的 conf 目录,复制 spark-env.sh.template 为 spark-env.sh ,并编辑该文件,设置 SPARK_DIST_CLASSPATH 环境变量,指定Hadoop相关库的路径。- 在Spark安装目录下的 bin 目录中,执行示例程序,如 spark-submit 提交一个WordCount程序,观察任务是否能在YARN集群上正常运行。- 配置 spark-defaults.conf ,设置 spark.master 为 yarn ,以及其他需要的参数。

2025-05-13 22:05:29 184

原创 Spark-core-RDD入门

在实际应用中,还可以使用更复杂的操作和函数来满足不同的需求。- 从集合创建:在Spark Shell中,可以通过 parallelize 方法从本地集合创建RDD。- 从外部数据源创建:可以从文件系统(如HDFS)读取数据创建RDD。- 映射(map):对RDD的每个元素应用一个函数,返回一个新的RDD。- 过滤(filter):筛选出满足条件的元素,返回一个新的RDD。- 收集(collect):将RDD的所有元素以数组形式返回。- 计数(count):返回RDD中元素的个数。

2025-05-13 22:04:03 146

原创 Yarn-tool接口

yarn application -list :用于列出当前YARN集群中正在运行的应用程序列表,可查看应用程序的ID、名称、状态等信息。- yarn rmadmin -showConfig :用于查看YARN资源管理器的配置信息,有助于了解集群的资源分配策略等。- yarn queue -list :用于列出YARN集群中的资源队列,以及队列的相关属性,如容量、使用情况等。- yarn node -list :可获取YARN集群中节点的列表信息,包括节点的状态、资源使用情况等。

2025-05-13 22:02:59 135

原创 MapReduce架构-打包运行

其中, your_jar_file.jar 是生成的JAR包文件名, your_main_class 是包含 main 方法的类名, input_path 是HDFS上的输入数据路径, output_path 是HDFS上的输出路径。Map函数将输入数据转换为键值对,Reduce函数对相同键的值进行聚合处理。通过以上步骤,你可以在MapReduce架构下成功打包和运行你的程序。在项目根目录下执行 mvn clean package 命令,生成一个包含所有依赖的可执行JAR包。

2025-05-13 22:01:20 179

原创 finalshell的配置

若要调整监控的刷新频率等,可在“工具”->“选项”->“监控”中设置。还能自定义字体、颜色等,在“工具”->“选项”->“外观”中进行设置。2. 命令自动提示与补全:输入命令时会智能提示,可在“工具”->“选项”->“终端”中进一步配置相关参数,如提示的灵敏度等。3. 快捷键设置:可在“工具”->“选项”->“快捷键”中查看和修改,如新建会话是Ctrl+N,新建标签页是Ctrl+T等。2. 点击“+”号,选择“SSH连接(密码)”或“SSH连接(公钥)”,以常用的SSH密码连接为例。

2025-05-13 21:59:43 162

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

这些命令在实际使用中可以通过管道( | )等方式组合起来,实现更复杂的功能。文本处理工具,可用于对文本进行格式化输出、统计等操作。用于在指定目录及其子目录中查找文件或目录。用于对文本进行编辑和替换。用于在文件中搜索指定的字符串。用于对文件内容进行排序。

2025-05-13 21:57:15 212

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

这些命令在实际使用中可以通过管道( | )等方式组合起来,实现更复杂的功能。文本处理工具,可用于对文本进行格式化输出、统计等操作。用于在指定目录及其子目录中查找文件或目录。用于对文本进行编辑和替换。用于在文件中搜索指定的字符串。用于对文件内容进行排序。

2025-05-13 21:56:17 177

原创 怎么理解RDD中的算子,RDD算子的分类

常见的有 map (对RDD的每个元素进行转换)、 filter (筛选出满足条件的元素)、 flatMap (先对元素进行转换,再将结果扁平化)、 union (合并两个RDD)、 groupByKey (按键分组)等。例如 count (返回RDD的元素个数)、 collect (将RDD的所有元素收集到驱动程序)、 reduce (对RDD的元素进行聚合操作)、 saveAsTextFile (将RDD保存为文本文件)等。并且相同的算子在相同的数据集上执行,结果是确定的,不受外部状态影响。

2025-05-07 10:53:07 195

原创 什么是RDD.RDD的创建方式

RDD(Resilient Distributed Dataset)即弹性分布式数据集,是Apache Spark中最基本的数据抽象。它代表一个不可变、可分区、里面的元素可并行计算的集合。- 从外部存储创建:从Hadoop支持的任何存储系统中读取数据来创建RDD,如HDFS、Cassandra、HBase等。- 通过转换现有RDD创建:通过对已有的RDD执行转换操作来创建新的RDD。- 从集合中创建:可以通过在驱动程序中并行化现有的集合来创建RDD。

2025-05-07 10:50:42 247

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

1. 安装和配置Java:确保你的计算机上已经安装了Java Development Kit (JDK),并且已配置好 JAVA_HOME 环境变量。- 在 src/main/java 或 src/main/scala 目录下创建一个新的Java或Scala类。- 点击IntelliJ IDEA中的运行按钮,或者右键点击主类,选择“Run”来运行你的Spark程序。2. 安装IntelliJ IDEA:下载并安装IntelliJ IDEA,建议使用社区版或旗舰版。

2025-04-28 19:35:27 473

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

解压压缩包到指定目录,如 /opt/spark ,并配置 SPARK_HOME 环境变量,将 $SPARK_HOME/bin 添加到 PATH 环境变量。- 可以通过访问 http://Master节点IP:8080 查看Spark Master的Web界面,确认集群是否正常启动。- 在Master节点上,执行 $SPARK_HOME/sbin/start-all.sh 启动Spark集群。- 在官网下载适合你系统的Spark版本,将下载的压缩包上传到集群中指定节点。- 各节点间能通过SSH免密登录。

2025-04-28 19:34:23 317

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

生态系统:两者都是Hadoop生态系统的重要组成部分,Hadoop为Spark提供了底层的存储和资源管理支持,Spark则为Hadoop生态系统提供了更快速、灵活的数据处理能力,它们可以结合使用,共同完成大数据处理的任务。- 编程模型:Spark的编程模型更简洁灵活,提供了丰富的API,如Scala、Java、Python等,支持多种语言编程。- 数据处理流程:在大数据处理流程中,Hadoop常作为数据存储和预处理的平台,而Spark可以在Hadoop处理的基础上,对数据进行进一步的分析和处理。

2025-04-27 14:20:54 557

原创 mapreduce的工作原理

每个数据块会被分配到一个Map任务中进行处理。Map任务的主要作用是将输入数据转换为键值对的形式,然后对这些键值对进行处理,生成中间结果。例如,在一个统计单词出现次数的任务中,Map任务会将每个单词作为键,出现的次数作为值,输出类似 (word, 1) 的键值对。- Reduce任务会从不同的Map任务中获取相应分区的数据,并对这些数据进行处理。在统计单词出现次数的例子中,Reduce任务会将相同单词的出现次数进行累加,得到最终的结果。- 输入数据被分割成多个小的数据块,这些数据块分布在不同的节点上。

2025-03-31 19:22:38 269

原创 hadoop 集群的常用命令

hadoop fs - get :从Hadoop文件系统中下载文件到本地,如 hadoop fs - get /user/hadoop/file.txt localfile.txt。- hadoop fs - put :将本地文件上传到Hadoop文件系统中,例如 hadoop fs - put localfile.txt /user/hadoop/。- yarn node - list:列出YARN集群中的节点信息,包括节点状态、资源使用情况等。

2025-03-31 19:21:25 283

原创 linux常见操作命令

chmod:修改文件权限, chmod 755 file.txt 将文件的权限设置为所有者可读可写可执行,其他用户可读可执行。- ls:列出目录内容,如 ls -l 以长格式显示文件和目录详细信息, ls -a 显示包括隐藏文件在内的所有文件。- rm:删除文件或目录, rm file.txt 删除指定文件, rm -r dir 删除目录及其所有内容。- cd:切换目录, cd /home/user 可进入指定的用户目录, cd.. 返回上一级目录。

2025-03-03 19:28:01 135

原创 vi常见操作命令

%s/old/new/g 用于将全文中的 old 替换为 new , :%s/old/new/gc 在替换时会逐个询问是否替换。- 移动光标: h 键向左移动一个字符, j 键向下移动一行, k 键向上移动一行, l 键向右移动一个字符;- 进入插入模式: i 在光标当前位置前插入文本;o 在光标所在行的下一行插入新行, O 在光标所在行的上一行插入新行。p 将复制或剪切的内容粘贴到光标所在位置的下一行, P 粘贴到上一行。- 保存退出: :w 保存文件, :wq 保存并退出vi, :q!

2025-03-03 19:27:13 227

原创 虚拟机IP配置

打开网络配置文件,一般为 /etc/sysconfig/network-scripts/ifcfg-eth0 , eth0 是网络接口名称,可能会因系统而异。保存文件后,执行 systemctl restart network 命令,系统会通过DHCP服务器自动获取IP地址等网络配置信息。登录CentOS虚拟机后,可使用 ifconfig 或 ip addr 命令查看当前网络接口的配置信息,包括IP地址、子网掩码等。将 BOOTPROTO 的值设置为 dhcp ,即 BOOTPROTO="dhcp"。

2025-03-03 19:25:10 212

原创 vm+centos虚拟机

安装步骤:在VMware中点击“创建新的虚拟机”,选择“典型”或“自定义”配置。完成设置后,启动虚拟机,按照CentOS安装向导进行操作,如选择语言、分区、网络配置等,即可完成安装。CentOS虚拟机就是在VMware等虚拟机软件中安装的CentOS系统。还支持快照功能,方便用户对虚拟机状态进行备份和恢复。- 概念:VMware是一款功能强大的虚拟机软件,能在一台物理计算机上创建多个相互隔离的虚拟计算机环境,即虚拟机。用户可在这些虚拟机中安装不同的操作系统和应用程序,实现多个系统在一台机器上同时运行。

2025-03-03 19:24:06 222

原创 如何安装配置虚拟机

**Microsoft Hyper - V**:仅适用于Windows系统(Windows 10专业版及以上),集成在操作系统中,对于Windows用户来说比较方便,如果主要在Windows环境下使用虚拟机可以考虑。- 如果使用Windows 10专业版及以上系统,可通过“控制面板”->“程序”->“启用或关闭Windows功能”,勾选“Hyper - V”来安装(需要重启计算机)。- 创建虚拟硬盘,选择硬盘类型(如VDI、VHD等),并确定硬盘大小和存储方式(如动态分配或固定大小)。

2025-02-21 14:23:28 385

原创 scala泛型

2024-12-12 08:38:10 122

原创 scala和spark的介绍

Spark最初由美国加州伯克利大学( UC Berkelcy)的AMP实验室于2009年开发,是基于内存计算的大数据并行计算框架,可用于构建大型的、低延迟的数据分析应用程序。

2024-12-11 20:50:34 1536

原创 使用 Maven 来构建 Scala

使用 Maven 来构建项目方便虽然方便,但依赖于每一个开发人员都去配置一遍项目的必要依赖,包括 Scala 插件的编译配置以及 Scala 的依赖类库,让每个人通过拷贝(Copy)之前的项目配置当然可以,但难免会出些纰漏。而从头开始所有相关配置项都配置一遍,又略显繁琐,那么,我们可不可以想办法来进一步简化类似的基于 Maven 的 Scala 项目创建和配置?

2024-12-11 20:48:50 1575

原创 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:46:12 220

原创 用scala定义函数的方式

/简写2:用 _ 占位符.(Int,Int)=>Int 他表示一种类型:收到两个整数的参数,返回一个整型值。// var classRoom = "教室310"//字面量。//println("教室310")//字面量。//定义函数的方式2:字面量的方式 =>//教室310+教室309。//定义函数的方式1。//简写1:省略{}

2024-12-11 20:44:55 179

原创 scala的map集合

如果你需要使用可变集合,你需要显式的引入 import scala.collection.mutable.Map 类。在 Scala 中 你可以同时使用可变与不可变 Map,不可变的直接使用 Map,可变的使用 mutable.Map。查询 :get方法,输入key,如果找到,就返回包装数据,如果没有找到,就返回None。Map 有两种类型,可变与不可变,区别在于可变对象可以修改它,而不可变对象不可以。直接:map(key名)如果key不存在,就会报错。Map常用操作有增加,删除,修改,查询。

2024-12-11 20:42:21 263

原创 scala图书馆创建图书信息

4.检查某一本特定的书籍(如 “Python 从入门到实践”)是否在图书馆集合中,使用 contains 方法,并输出结果。1.创建一个可变 Set,用于存储图书馆中的书籍信息(假设书籍信息用字符串表示,如 “7.求出两个图书馆书籍集合的交集,使用 intersect 方法,并输出结果。8.求出当前图书馆相对于另一个图书馆的差集,使用 diff 方法,并输出结果。6.求出两个图书馆书籍集合的并集,使用 union 方法,并输出结果。5.创建另一个可变 Set,表示另一个图书馆的书籍集合。

2024-12-11 20:41:12 191

原创 scala的迭造器

无论底层集合的具体结构如何,只要能获取到迭代器,就可以使用相同的hasNext和next方法来。zip方法用于将两个迭代器的元素按顺序组合成一个新的迭代器,其中每个元素是一个包含两个迭代器对应位置元素的元组。如果两个迭代器的长度不同,zip操作会在较短的迭代器耗尽时停止。采用延迟计算的方式,它不会将整个集合加载到内存中,而是在每次调用next方法时才计算并返回下一个元素。返回一对迭代器,它们可以独立遍历原始迭代器中的元素序列。take 只处理当前开始的,指定数量的元素,返回一个新的迭代器。

2024-12-11 20:39:23 232

原创 scala的array

表示长度不可变的数组,若需要定义可变数组需要倒包。发布于2024-11-14著作权归作者所有。

2024-12-11 20:37:55 290

空空如也

空空如也

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

TA关注的人

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