- 博客(64)
- 收藏
- 关注
原创 sparkSQL读入csv文件写入MySQL
5. 使用 write.jdbc 方法将处理后的 DataFrame 写入MySQL数据库,并指定了写入模式。.mode("append") // 写入模式,这里是追加模式,还可以用"overwrite"等。3. 对读入的 DataFrame 进行了简单的数据处理(示例中添加了一列固定值的列)。4. 配置了MySQL数据库的连接信息,包括URL、表名、用户名、密码和驱动。// 读取CSV文件,假设CSV文件有表头,并且自动推断数据类型。记得将代码中的文件路径、数据库连接信息、表名等替换为实际的值。
2025-05-14 09:04:42
327
原创 sparkSQL基本使用
DataFrame是Spark SQL中用于处理结构化数据的核心数据结构,可以从多种数据源创建,如文件、数据库等。以上是Spark SQL的基本使用步骤,通过这些操作可以方便地处理结构化数据。在实际应用中,可以根据具体需求进行更复杂的操作。
2025-05-14 09:03:26
231
原创 MySQL数据库配置
Linux系统:配置文件一般是 my.cnf ,常见位置有 /etc/mysql/ 、 /etc/mysql/mysql.conf.d/ 等。- InnoDB缓冲池大小: innodb_buffer_pool_size ,建议设为物理内存的70% - 80%,用于缓存数据和索引页。- InnoDB事务日志文件大小: innodb_log_file_size ,合理配置可优化日志性能。- 排序缓冲区大小: sort_buffer_size ,为排序线程分配的缓冲区大小。
2025-05-14 09:02:31
127
原创 idea写spark程序
在IntelliJ IDEA中,右键点击 WordCount 类的 main 方法,选择“Run WordCount”,即可运行程序。上述代码中, input.txt 是要处理的文本文件,这里假设文件内容是一些单词,每行是一个句子,程序会对文件中的单词进行计数。以上是一个简单的Spark程序编写和运行过程,你可以根据实际需求对程序进行扩展和优化,比如处理不同格式的数据、使用不同的算法等。如果程序运行成功,你会在控制台看到单词计数的结果,每个单词及其对应的出现次数。
2025-05-14 09:01:25
273
原创 spark基本介绍
Spark Core:提供了Spark的基本功能,包括任务调度、内存管理、错误恢复等,还包含了RDD(弹性分布式数据集)这一核心数据结构,是其他组件的基础。- GraphX:用于图计算的组件,提供了图数据结构和相关的操作,如顶点和边的操作、图算法等,可用于处理社交网络、推荐系统等领域中的图数据。- 易用性好:支持多种编程语言,如Scala、Java、Python和R等。- MLlib:机器学习库,提供了各种机器学习算法和工具,如分类、回归、聚类、协同过滤等,方便用户进行数据挖掘和机器学习任务。
2025-05-14 09:00:22
405
原创 tool接口—代码实现
上述代码仅供参考,你可以根据具体需求对工具接口进行定制和扩展。你也可以详细说明你的具体需求,比如接口要实现的功能、使用的技术栈等,以便我为你提供更准确的代码。:param a: 第一个数。:param b: 第二个数。:return: 两数之和。
2025-05-14 08:59:41
172
原创 yarn基本介绍与相关应用
Apache Hive:数据仓库工具,其查询任务通常会转化为MapReduce作业或Spark作业在Yarn集群上执行,Yarn为Hive提供了资源管理和任务调度的支持,保证查询任务能够高效运行。- Apache Flink:流计算框架,也可以与Yarn集成,在Yarn集群上运行Flink作业,实现实时数据处理。- 工作流程:用户提交应用程序到Yarn集群,RM会为应用程序分配一个AM,AM向RM申请资源,并在NM上启动任务,NM负责执行任务并向RM和AM汇报任务状态。
2025-05-14 08:58:26
168
原创 算子有几类
行动算子会触发RDD的计算,并返回结果或执行某种操作。常见的行动算子有 collect 、 count 、 reduce 、 take 、 foreach 、 saveAsTextFile 、 saveAsObjectFile 等。这类算子用于对RDD进行转换,生成一个新的RDD。除了以上两类,还有控制依赖关系的算子,如 cache 和 persist ,用于将RDD持久化到内存或磁盘,以提高后续计算的效率,不过它们通常不被严格归为转化算子或行动算子。
2025-05-07 10:17:18
104
原创 怎么理解RDD中的算子
flatMap :先对RDD中的每个元素进行转换,然后将结果扁平化,例如将一个包含多个列表的RDD展开成一个单一的列表。- 特点:这类算子会返回一个新的RDD,并且是惰性求值的,即不会立即执行计算,只有当行动算子触发时才会真正计算。- collect :将RDD中的所有元素收集到驱动程序中,以数组的形式返回,适用于数据量较小的RDD。- map :对RDD中的每个元素进行一对一的转换,例如将一个整数列表中的每个元素乘以2。- count :返回RDD中元素的数量。
2025-05-07 10:16:46
199
原创 RDD有哪几种创建方式
可以从Hadoop支持的文件系统(如HDFS、S3等)、本地文件系统或其他数据源(如数据库)中读取数据创建RDD。通过 parallelize 方法可以将本地集合转换为RDD。这里 rdd2 就是通过对 rdd1 进行 filter 转换操作创建的新RDD。通过对已有的RDD进行转换操作来创建新的RDD。从其他RDD转换创建。
2025-05-07 10:16:15
282
原创 RDD转换算子
与 map 类似,但它是对RDD的每个分区进行操作,传入的函数接收一个分区的迭代器,返回一个新的迭代器。它可以在处理每个分区时进行一些初始化和清理操作,比 map 更高效,特别是在需要对每个分区进行批量操作时。用于合并两个RDD,生成一个包含两个RDD中所有元素的新RDD。两个RDD的类型必须相同。返回两个RDD的交集,即包含同时存在于两个RDD中的元素的新RDD。对RDD中的元素进行去重,返回一个包含唯一元素的新。// 对每个分区内的元素乘以2。
2025-05-07 08:13:04
172
原创 RDD算子基本介绍
例如 rdd.flatMap(x => x.split(" ")) 将每个元素按空格拆分后合并成一个新的RDD。- reduce:对RDD中的元素进行聚合操作,通过指定的函数将所有元素合并为一个结果。例如 rdd.reduce((x, y) => x + y) 计算 rdd 中所有元素的和。- filter:根据指定的条件筛选RDD中的元素,返回符合条件的元素组成的新RDD。- map:对RDD中的每个元素应用一个函数,返回一个新的RDD,元素个数不变。- count:返回RDD中的元素个数。
2025-05-07 08:12:14
173
原创 RDD的运行过程
5. 划分阶段(Stage):DAG调度器根据RDD之间的依赖关系,将DAG划分为多个阶段(Stage)。如果是宽依赖(一个父RDD的分区被多个子RDD的分区使用,如 reduceByKey 操作),则会产生新的阶段,因为宽依赖涉及数据的重新分布(Shuffle)。2. 转换操作(Transformation):对RDD应用转换操作,如 map 、 filter 、 join 等,这些操作不会立即执行计算,而是生成一个新的RDD,记录着对父RDD的操作 lineage(血统关系)。
2025-05-07 08:11:15
313
原创 spark—shell中写代码
以上代码片段展示了在 spark-shell 中常见的RDD操作,你可以根据实际需求进行更复杂的业务逻辑编写和数据处理。// 使用collect行动操作获取转换后RDD的所有元素并打印。// 使用reduceByKey转换操作对相同键的值进行累加。// 使用filter转换操作过滤出包含特定字符串的行。// 使用collect行动操作获取聚合后的结果并打印。// 使用count行动操作统计过滤后剩余的行数。// 创建一个包含数字1到5的RDD。// 创建一个包含键值对的RDD。
2025-05-07 08:10:33
144
原创 RDD的基本介绍
它通过记录数据的生成过程(血统),在出现节点故障或数据丢失时,能重新计算丢失的数据。这些操作是懒执行的,只是定义了计算逻辑,不会立即执行。- 懒执行:RDD的转换操作是懒执行的,只有当行动操作被触发时,才会真正执行计算,这样可以优化计算流程,避免不必要的计算。- 分布式:RDD可以分布在多个节点上,能处理大规模数据集,可将数据分散到不同的计算节点进行并行处理,提高计算效率。- 不可变:RDD一旦创建就不可修改,只能通过转换操作创建新的RDD,这种特性使得RDD的操作具有确定性和可重复性。
2025-05-07 08:09:14
186
原创 java实现序列化与反序列化
System.out.println("对象已序列化并保存到 person.ser");System.out.println("反序列化结果: " + person);// 自定义处理(如加密)// 反序列化(JSON → Object)// 反序列化(JSON → Object)// 序列化(Object → JSON)// 序列化(Object → JSON)
2025-04-30 15:50:37
1031
原创 数据清洗的定义跟实际操作
是指对原始数据进行处理,以纠正、删除或填补不完整、不准确、重复或无关的数据,使其符合分析或建模的要求。df["order_date"] = pd.to_datetime(df["order_date"], format="%Y-%m-%d") # 统一为YYYY-MM-DD。df["price"] = df["price"].clip(upper=1000) # 超过1000的值替换为1000。统一日期、时间、单位、字符串格式(如"USA" vs "United States")
2025-04-30 15:48:39
614
原创 idea写spark程序
IntelliJ IDEA (推荐Ultimate版,Community版也可)JDK 8或11Scala插件(在IDEA中安装)Spark最新版本(本地开发可以用embedded模式)打开IDEA → New Project选择"Maven"项目类型勾选"Create from archetype",选择填写GroupId和ArtifactId。
2025-04-30 15:39:47
1203
原创 spark的安装与应用
Apache Spark 是一个快速、通用的集群计算系统,提供了高级 API(Java、Scala、Python 和 R)以及支持通用执行图的优化引擎。它支持丰富的高级工具集,包括用于 SQL 和结构化数据处理的 Spark SQL,用于机器学习的 MLlib,用于图形处理的 GraphX 以及用于增量计算和流处理的 Spark Streaming。
2025-04-30 15:35:37
943
原创 如何在idea中写spark程序
2. 创建Spark程序:在项目的 src/main/scala (Scala项目)或 src/main/java (Java项目)目录下创建包和类。1. 配置Scala SDK:如果使用Scala编写Spark程序,需确保IDEA中配置了Scala SDK。若未配置,可在项目结构中添加Scala SDK,指定Scala的安装路径。1. 创建Maven或Gradle项目:打开IDEA,选择创建新项目,根据需求选择Maven或Gradle项目,配置好项目的基本信息,如项目名称、存储位置等。
2025-04-28 20:14:28
602
原创 如何搭建spark yarn 模式的集群集群
进入Spark的配置目录,复制 spark-defaults.conf.template 为 spark-defaults.conf ,并进行编辑,设置 spark.master 为 yarn , spark.submit.deployMode 为 cluster 等参数。- 在主节点上进入Spark的 sbin 目录,执行 start-all.sh 脚本启动Spark集群,会启动Master和Worker等进程。- 确保集群中各节点安装了Java环境,并配置好 JAVA_HOME 环境变量。
2025-04-28 20:13:49
375
原创 spark和Hadoop之间的对比和联系
核心组件 由HDFS(存储)、MapReduce(计算)组成 以Spark Core为核心,集成SQL、Streaming等组件。- Hadoop是大数据存储计算的“基石”,适合离线批量处理;计算模型 基于磁盘的批处理,Map/Reduce分步执行 内存计算为主,支持DAG(有向无环图)流水线计算。- Hadoop是基础:HDFS为Spark提供数据存储,YARN可作为Spark的资源管理器。- 实际应用中常结合使用:Hadoop存储数据,Spark通过Hive读取数据并加速计算。
2025-04-23 11:08:13
215
原创 Yarn的定义?
功能分离,形成一个通用的资源管理平台,可以支持多种计算框架(如 MapReduce、Spark、Flink 等)。不仅支持 Hadoop MapReduce,还支持 Spark、Flink、Tez 等分布式计算框架。它是 Hadoop 2.x 及以后版本的核心组件,取代了 Hadoop 1.x 中的。:不仅限于 MapReduce,还可运行 Spark、Flink 等。管理集群的 CPU、内存等计算资源,并按需分配给不同的应用程序。:支持不同的调度策略(如公平调度、容量调度)。
2025-04-18 15:10:28
383
原创 Hadoop的三大结构及各自的作用?
支持多种计算框架(如MapReduce、Spark、Flink)在同一个集群上运行。提高集群资源利用率,避免传统MapReduce的单一任务调度瓶颈。词频统计(WordCount)、数据清洗、聚合分析等。:存储实际数据块(默认128MB/块,3副本)。:适合大规模静态数据集(如日志分析、ETL)。:管理文件系统的元数据(如文件目录结构)。:统一分配集群的CPU、内存等资源。:汇总Map的结果,输出最终数据。:并行处理输入数据,生成键值对(:单个作业的任务协调。(适合大文件读写)。:自动处理节点故障。
2025-04-18 15:08:01
477
原创 mapreduce的工作原理
每个数据块都会被一个Map任务处理。Map任务将输入数据解析成键值对 <key, value> ,然后通过用户定义的Map函数对每个键值对进行处理,生成一组新的中间键值对。例如,在一个统计单词出现次数的任务中,Map函数可能会将每个单词作为键,出现次数初始化为1,生成 <单词, 1> 这样的中间键值对。- Map阶段产生的中间键值对会按照键进行排序和分组,相同键的值会被聚集到一起,形成 <key, [value1, value2, ...]> 的形式,然后被发送到Reduce任务所在的节点。
2025-03-31 19:34:42
219
原创 hadoop集群的常用命令
hadoop fs -put <local_path> <hdfs_path> :将本地文件系统中的文件上传到HDFS指定路径,例如 hadoop fs -put /home/hadoop/file.txt /user/hadoop/。- hadoop fs -get <hdfs_path> <local_path> :从HDFS下载文件到本地文件系统,如 hadoop fs -get /user/hadoop/file.txt /home/hadoop/。MapReduce相关命令。
2025-03-31 19:33:41
305
原创 环境变量的概念
在Windows系统中,可以通过“控制面板”中的“系统和安全”→“系统”→“高级系统设置”,在弹出的对话框中点击“环境变量”按钮来进行设置和查看。例如,在Windows系统中, PATH 环境变量用于指定可执行文件的搜索路径,当你在命令提示符中输入一个命令时,系统会按照 PATH 中指定的路径去查找对应的可执行文件。- 用户环境变量:针对每个用户进行设置,只对当前用户有效。环境变量在计算机系统中起着重要的作用,它为系统和应用程序提供了一种灵活的配置方式,使得不同的软件和工具能够在不同的环境中正确运行。
2025-03-26 08:42:35
169
原创 Linux常见操作命令
使用 tail 命令可以查看文件的后几行, tail -n 10 file 可以查看文件的后10行, tail -f file 可以实时查看文件的更新内容,常用于查看日志文件。- 查看目录内容:使用 ls 命令, ls 可以列出当前目录下的文件和子目录, ls -l 可以以详细列表形式显示文件信息, ls -a 可以显示包括隐藏文件在内的所有文件。- 删除文件/目录:使用 rm 命令, rm file 可以删除文件, rm -r dir 可以递归删除目录及其内容, rm -f 可以强制删除,不提示确认。
2025-03-03 19:31:15
1296
原创 vi常见操作命令
移动光标:在命令模式下,可以使用 h (向左)、 j (向下)、 k (向上)、 l (向右)键来移动光标,也可以使用 Ctrl + f (向下翻页)、 Ctrl + b (向上翻页)。- 复制粘贴:按 yy 可以复制光标所在的整行,按 nyy (n为数字)可以复制从光标所在行开始的n行。- 删除字符:按 x 键可以删除光标所在位置的字符,按 nx (n为数字)可以删除光标所在位置及后面的n个字符。- 删除行:按 dd 可以删除光标所在的整行,按 ndd (n为数字)可以删除从光标所在行开始的n行。
2025-03-03 19:30:17
158
原创 虚拟机IP配置
编辑网络配置文件:CentOS系统的网络配置文件位于 /etc/sysconfig/network-scripts/ 目录下,一般网卡配置文件名为 ifcfg-eth0 (如果有多个网卡,可能是 ifcfg-eth1 等)。其中, IPADDR 是你要设置的静态IP地址, NETMASK 是子网掩码, GATEWAY 是网关地址, DNS1 和 DNS2 是DNS服务器地址。查看当前网络配置:登录到CentOS虚拟机后,打开终端,输入命令 ip addr ,可以查看当前的网络配置信息。
2025-03-03 19:28:53
351
原创 vm+centos虚拟机
选择安装来源:这里选择“安装程序光盘映像文件(iso)”,然后浏览并选择你下载好的CentOS镜像文件,点击“下一步”。设置虚拟机名称和安装位置:给你的虚拟机取一个名字,比如“CentOS 7”,并选择一个合适的安装位置,这里要注意安装位置的磁盘空间要足够,然后点击“下一步”。安装CentOS:虚拟机创建完成后,点击“开启此虚拟机”,开始安装CentOS。在分区时,你可以选择自动分区,也可以手动分区。设置root密码和创建用户:安装过程中,需要设置root用户的密码,这是系统的超级管理员密码,一定要牢记。
2025-03-03 19:27:05
395
原创 作业作业作业
package test40object test4 { def getMax(intList: List[Int]): Int = { intList.foldLeft(intList.head)(math.max) } def getMax(doubleList: List[Double]): Double = { doubleList.foldLeft(doubleList.head)(math.max) } def main(args: Array[St
2024-12-12 09:22:48
122
原创 补充前面漏掉的
/6.脱字符^如果在正则的最前面,表示,要匹配的内容必须在字符串的开头。//7.脱字符$如果在正则的最后面,表示,要匹配的内容必须在字符串的结尾。//2.[a-z]:表示从a到z的26个字母中的任意的一个。//3.[A-Z]:表示从A到Z的26个字母中的任意的一个。//1.[ab]:表示匹配一个字符,或者是a或者是b。//4.[0-9]:表示从0到的10中任意一个。//5.{11}:表示前面的字符能出现11次。//定义一个正则表达式。
2024-12-12 00:06:12
240
原创 练习关于在scala中case的用法
/ l1.insert(2,150) //在指定位置添加 把2这个位置的元素改成150,其他的往后移。// val rs =l1.contains(2) //判断元素2是否存在list中。// val l3 = l1 ++l2 //把l1和l2中的内容合并到l3中。// //不可变 l1(0) =100写法是错误的!// l1.remove(0)//删除指定位置上的元素。// l1.prepend(-1)//在头部添加。// l1 -=150//删除指定元素。// //6.判断元素是否存在。
2024-12-12 00:05:38
375
原创 练习题Scala
println(s"《$name》 不存在,删除失败")println(s"id: $id 不存在,删除失败")println(s"《$name》 存在,删除成功")println(s"id: $id 存在,删除成功")println(s"总的金额是:${sum}")println(s"《$name》 不存在")println(s"《$name》 存在")println("没有")println("有")
2024-12-12 00:05:04
427
原创 二维数组,以及ARRAY的习题及答案
//二维数组//2.1创建方式1val arr5 = Array.ofDim[Int](2,3)//2行2列//2.2访问数组的元素arr5(0)(0)=1arr5(0)(1)=2arr5(1)(0)=3arr5(1)(1)=4//2.3把一维数组转化为二维数组var arr6 =Array(1,2,3,4,5,6)var arr7 =arr6.grouped(3)//3个元素一组// println(arr7)while (arr7.hasNext)
2024-12-12 00:04:16
558
原创 在scala中完成练习题(成绩排名) | 题目如图
list += Student("林峰", 102, 0) //2。list += Student("周周", 101, 0) //3。list += Student("郑选", 105, 0) //1。list += Student("吴刚", 102, 0) //2。list += Student("孙涛", 90, 0) //4。list += Student("陈晨", 90, 0) //4。//(2)若当前的分数等于预设的分数,则名次不变。//对list碱性排序,按总分排名。
2024-12-12 00:03:02
138
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人