自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MySQL数据库创建新的数据库和数据表

如果你更喜欢使用图形界面工具,可以使用MySQL Workbench、phpMyAdmin等工具来创建数据库。以MySQL Workbench为例,打开工具后,连接到你的MySQL服务器,然后在左侧导航栏右键点击“数据库”,选择“创建数据库”,输入数据库名称,点击“应用”即可完成创建。如果没有,请访问MySQL官网(https://www.mysql.com/)下载并安装适合你操作系统的版本。在MySQL中,可以使用CREATE DATABASE语句创建一个新的数据库。这将创建一个名为mydb的新数据库。

2025-05-13 09:56:57 260

原创 SparkSQL的基本使用

2014 年 1.0 版本更新,Shark 和 SparkSQL 项目的负责人宣布停止 Shark 的开发,支持 Shark 发展到达终点,SparkSQL 的时代到来2。易整合:SparkSQL 无缝整合了 SQL 查询与 Spark 编程,可以随时用 SQL 或者 DataFrame 的 API 进行处理结构化数据,并且支持多语言(Java、Scala、Python、R)2。统一的数据访问:使用相同的方式,连接不同的数据源或者不同文件格式中的数据,支持读写数据从不同的数据来源到不同的数据来源2。

2025-05-13 09:55:12 279

原创 RDD-自定义分区器

分区器的唯一性:分区器的 equals 和 hashCode 方法需要正确实现,以确保分区器在 Spark 的内部逻辑中能够正确识别。分区逻辑:getPartition 方法中的逻辑应根据实际业务需求定义,确保数据能够正确分区。通过以上步骤,你可以实现一个自定义分区器,并根据特定的业务逻辑对 RDD 进行分区。分区数量:分区数量应根据实际需求合理设置,过多或过少的分区都会影响性能。使用 partitionBy 方法将 RDD 按自定义分区器进行分区。numPartitions 方法返回分区的数量。

2025-05-13 09:53:21 173

原创 RDD-分区和分区器

range分区器会对现有rdd中的key-value数据进行抽样,尽量找出均衡分割点,一定程度上解决了数据偏移问题,力求分区后的每个分区内数据量均衡,但是速度相对慢。hash分区器会根据key-value的键值key的hashcode进行分区,速度快,但是可能产生数据偏移,造成每个分区中数据量不均衡。MR任务的map阶段的处理结果会进行分片(也可以叫分区,这个分区不同于上面的分区),分片的数量就是reduce task的数量。决定将Map阶段中间结果的每个key-value对分到哪个分区上。

2025-05-13 09:42:10 176

原创 Spark缓存-persist

MEMORY_ONLY_SER:将 RDD 以序列化的 Java 对象形式存储在内存中,相较于 MEMORY_ONLY,序列化后占用的内存空间更小,但读取时需要进行反序列化操作,会带来一定的性能开销。MEMORY_ONLY:将 RDD 以 Java 对象的形式存储在 JVM 的内存中。MEMORY_AND_DISK:优先把 RDD 以 Java 对象的形式存储在 JVM 的内存中。MEMORY_AND_DISK_SER:优先将 RDD 以序列化的 Java 对象形式存储在内存中,内存不足时存储到磁盘上。

2025-05-13 09:40:17 201

原创 RDD算子——行动算子

行动算子是触发 Spark 计算的“触发点”,因为 Spark 的 RDD 是懒惰计算的,只有在执行行动算子时,才会真正开始计算。reduce 用于对 RDD 中的元素进行全局聚合操作,例如计算 RDD 中所有元素的总和、最大值、最小值等。它会触发 Spark 作业的实际执行,对 RDD 中的所有元素进行计数,并将最终的计数结果返回给驱动程序。返回值:返回一个包含 RDD 中所有元素的数组,数组元素的类型与 RDD 中元素的类型一致。返回值:返回一个单一的值,其类型与 RDD 中元素的类型相同。

2025-05-13 09:36:46 659

原创 RDD算子——转换算子

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

2025-05-13 09:31:17 736

原创 什么是RDD

Resilient Distributed Dataset 叫做弹性分布式数据集,是Spark中最基本的数据抽象,是分布式计算的实现载体,代表一个不可变,可分区,里面的元素并行计算的集合。// 获取并打印分区数val partitionCount = hdfsRDD.getNumPartitions。val distData = sc.parallelize(data, 2) // 第二个参数是分区数。表示数据是存放在不同的机器上的。// 通过 parallelize 方法将本地集合转换为 RDD。

2025-05-13 09:25:20 411

原创 RDD算子——转换算子和行动算子的区别

两者在具体问题中可能有交集(例如量子力学中的算子既描述演化也作用于波函数),但侧重点不同。,常见于马尔可夫过程、随机过程或量子力学的时间演化中。转换算子通常描述系统从一个状态到另一个状态的。行动算子通常指代一个算子(如线性算子)它强调算子对输入对象的“作用”方式。

2025-05-13 09:09:39 255

原创 在idea写spark程序

在项目根目录下建立文件夹input,并穿件两个文本文件:word1.txt, word2.txt。E:\tool接口\SparkCore_01\src\main\scala\WordCount.scala:16:9。2.将Scala添加到全局库中(注意:Scala的版本不宜太高,最好是2-12.否则后面会报下面这个错误。(红色无所谓,只要后面出现:进程已结束,退出代码为 0。-- 添加依赖: scala-library spark-core-->添加完成之后,刷新Maven,它会帮助我们去下载依赖。

2025-04-29 10:46:46 585

原创 作业:jps

【代码】作业:jps。

2025-04-29 09:29:02 296

原创 如何在idea中写spark程序

在IntelliJ IDEA中使用Spark技术可以帮助你更高效地进行大数据处理和分析。通过以上步骤,你可以在IntelliJ IDEA中成功配置并运行Spark程序。3.安装Scala:下载并安装Scala 2.12.15,并配置环境变量1。2.安装IntelliJ IDEA:下载并安装IntelliJ IDEA。5.安装Maven:下载并安装Maven 3.5.4,并配置环境变量。4.安装Scala插件:在IDEA中安装Scala插件。1.安装JDK:下载并安装JDK 1.8。

2025-04-28 19:55:13 215

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

Spark 作为计算框架,直接运行在 YARN 中,并接受 YARN 的资源调度。Spark 的 Driver 可以运行在 YARN 容器内或提交任务的客户端进程中,而实际执行任务的 Executor 运行在 YARN 提供的容器内。Cluster 模式: 在这种模式下,Driver 运行在 YARN 集群中的一个容器内,通常用于生产环境。在 client 模式下,日志会随客户端的标准输出流输出,而在 cluster 模式下,客户端不会有日志信息和结果输出。配置 Spark 在 YARN 环境中的运行。

2025-04-28 19:50:49 404

原创 spark-standalone模式

9.启动SPARK集群。进入到hadoop100机器,切换目录到/opt/module/spark-standalone/sbin下,运行命令 ./start-all.sh。请观察是否在hadoop101上看到了master,worker在hadoop103,hadoop102上看到了worker。一、定义:Standalone 模式是一种独立的集群部署模式,自带完整服务,可单独部署到一个集群中,无需依赖任何其他资源管理系统。1.和前面一样拉到hadoop101的/opt/module这个目录里面。

2025-04-22 11:19:34 230

原创 spark-local模式

通过mv spark-3.3.1-bin-hadoop3 spark-local这个命令将解压后的文件夹改成spark-local(重命名是为了后续我们还会使用其他的配置方式,所以这里先重命名一次。三、通过tar -zxvf spark-3.3.1-bin-hadoop3.tgz -C /opt/module/这个命令将spark安装文件到/opt/module下。二、通过finalshell连接虚拟机,连接成功后打开/opt/software,将我们的压缩文件拉到这个目录下。一、首先打开我们的虚拟机。

2025-04-22 10:29:17 300

原创 spark的基础概念

此外,Spark 还支持 Structured Streaming,提供了更高级的、基于 SQL 的实时流处理模型,使得实时数据处理更加容易和高效,Spark框架,支持迭代式计算,图形计算。Spark:Spark 基于内存进行计算,能将数据缓存在内存中,避免了频繁的磁盘 I/O。Hadoop:Hadoop 主要用于批处理任务,难以满足实时性要求较高的数据处理场景,如实时监控、实时推荐等,HadoopMR框架,从数据源获取数据,经过分析计算之后,将结果输出到指定位置,核心是一次计算,不适合迭代计算。

2025-04-22 08:32:29 713

原创 数据压缩

四、打开我们之前的项目(是下面这个哦)在下面位置添加下下面代码//开启reduce端压缩在第七点上面添加//设置reduceTask的数量//产生结果的时候,会用3个文件来保存// 设置自定义分区器//设置reduce的个数注意:第六点要注释。

2025-04-16 14:53:19 459

原创 流量统计(Hadoop序列化)

String flowDesc = String.format("总的上行流量是:%d,总的下行流量是:%d,总流量是:%d", upFlowSum, downFlowSum, sumFlow);//1.遍历集合,去除每一个元素,计算上行流量和下行流量的汇总。//1.获取配置,得到job对象。//上行流量就是第二个元素。//下行流量就是第三个元素。//三个属性,手机号,上行流量,下行流量。//手机号就是第一个元素。//2.设置jar包路径。//2.计算总的汇总。//定义get/set方法。

2025-04-15 11:19:36 799

原创 序列化与反序列化(2)

/readFields:在反序列化的时候,调用。// //hadoop序列化:把对象保存到一个文件中。//dataOutput.write(字段);//hadoop序列化:把对象保存到一个文件中。//write:在序列化的时候,调用。//字段=dataInput.read();//hadoop反序列化:从文件中读取对象。//字段的顺序要与write中的顺序一致。//1.要实现Writable接口。//支持hadoop序列化。//2.补充一个空参构造。//学生类,姓名,年龄。

2025-04-15 09:28:30 801

原创 序列化与反序列化

/java反序列化:从文件student_java.ser中读出内容,还原这个对象。// //1.让这个类实现Serializable接口。//1.让这个类实现Serializable接口。// //java序列化:把对象保存到一个文件中。//java序列化:把对象保存到一个文件中。// //3.把对象写入到文件中。//3.把对象写入到文件中。// //2.创建一个输出流。//2.创建一个输出流。// //4.关闭。

2025-04-15 09:26:14 580

原创 自定义分区器

/如果Key1和Key2的code相同,那么他们会被分配到同一个分区,保存到同一个文件。//产生结果的时候,会用3个文件来保存。在“// 6. 设置输入和输出路径。//如果单词是以a~m开头,那么会被分配到第一个分区。1.在WordCountDriver里面将链接集群注释了。//设置reduceTask的数量。//返回值是0,1,2.....//否则,就分配到第二个分区。//2.重写getPartition方法。//1.获取单词首字符。// 设置自定义分区器。//1.继承Partitioner类。

2025-04-08 09:21:58 241

原创 学习数据清洗

/ 1. 获取一行数据,使用空格进行拆分,判断是否有8个字段。// 这条数据是无意义的,不保留。// 这条数据是有意义的,保留。// 设置reducetask个数为0。一、先修改pom.xml,在后面添加下面代码。// 5 设置输入和输出路径。// 4 设置最终输出类型。// 2 加载jar包。// 3 关联map。二、创建WebLogMapper类。三、创建WebLogDriver类。// 1 获取job信息。

2025-04-08 09:15:45 369

原创 mapreduce的工作原理

输出:Map 函数的输出是新的键值对,这些中间结果将传递给 Reduce 阶段^1^。输出:Reduce 函数的输出是最终结果,通常存储在 HDFS 中^1^。处理:Reduce 函数对相同键的值进行合并计算,生成最终结果。Shuffle 阶段: 分区:将 Map 阶段的输出数据进行分区,每个分区对应一个 Reduce 任务。Map 阶段: 输入:Map 阶段接收输入数据,通常是键值对(key-value pairs)。Reduce 阶段: 输入:Reduce 阶段接收 Shuffle 阶段处理后的数据。

2025-03-31 19:53:59 178

原创 Hadoop集群命令

文件权限管理: hdfs dfs -chmod permissions hdfs_path hdfs dfs -chown owner:group hdfs_path 修改 HDFS 文件的权限和所有者。合并下载: hdfs dfs -getmerge hdfs_source_path local_destination_file 将 HDFS 中的多个文件合并后下载到本地。查看文件内容: hdfs dfs -cat hdfs_file_path 查看 HDFS 中某个文件的内容。

2025-03-31 19:50:16 254

原创 任务(一)

如图。

2025-02-26 15:45:45 125

原创 虚拟机配置IP

linux中,ip地址是写在配置文件(/etc/sysconfig/network-scripts/ifcfg-ens33)中,这里使用 vi 编辑器去修改即可!这里要注意一下:VMware net work Adpater VMnet8是安装了Vm这个软件之后会自动产生的。注意:这里的第三个部分的10并不是固定的,我们自己可以约定,但是约定之后就要固定下来。具体操作如下:选择控制面板 → 网络连接 → VMware network。让所有的vm配置的虚拟机使用NAT时,它们的网段都是一致的。

2025-02-26 15:35:31 296

原创 安装VM和centos

直接点击下一步,都是默认设置,最后点击完成。

2025-02-25 11:28:16 160

原创 VI编辑器 和 常见命令

在这个模式下,所敲的按键编辑器都理解为命令,以命令来驱动执行不同的功能。1.如果这个文件不存在,此时就是新建文件夹,编辑器的左下角会提示:new file。把文件内容添加到一个全新的文件的快捷方式:echo 1 >> 1.txt。提示:在命令模式下按下 shift + zz ,可以实现快速保存退出。2.nyy(小写)复制当前行往下n行内容。1.p(小写)在当前行的下一行粘贴。4.按下 G 键(大写g)可以跳到文件的最后一行。5.按下 gg 键(两个小写g)调到文件的第一行。1.u 撤销上一步的操作。

2025-02-25 11:08:51 347

原创 Linux创造命令系统

会把 111 写入到 a.txt 这个文件中,把之前的内容删除掉。示例: 把 file1.txt 复制一份得到 file2.txt。示例:先创建一个目录,把一个压缩文件(test.tar)解压出来,就放在指定目录(/temp)移动操作:mv file.txt newdir/file.txt。命令:tar -cvf test.tar 1.txt 2.txt 3.txt。把1.txt,2.txt,3.txt 压缩到 test.tar 文件中。-c :建立一个压缩文件,把多个文件或文件夹压缩到一个新的文件中。

2025-02-25 10:55:57 933

原创 Linux命令

rm -rf /* 将根目录及以下所有递归逐一删除,无需用户确认(小心使用)3 cd~ 当前用户的 home目录,比如 root 用户 home 目录是 /root。rm -rf ./bbb 讲目录及以下所有递归逐一删除,无需用户确认。3. mkdir -p 命令:创建目录,如果父级目录不存在,就建立一个父级目录。1. ls:列出目录内容,包括参数 -l(详细列表), -a(显示隐藏文件)2. ll -a 命令,显示当前的目录下的文件,包括隐藏文件。1. ll 命令,用来显示当前的目录下的文件。

2025-02-25 10:55:21 144

原创 了解大数据

阶段3:实时大数据时代 spark是基于内存的计算,mapReduce是基于磁盘的计算。2、高扩展性:在集群间分配任务数据,可方便的拓展数以千计的节点。五、Hadoop的定义:Hadoop是分布式系统处理架构。3、多样 :结构化数据和非结构化数据。1、高可靠性:底层维护多个数据副本。阶段2:大数据时代-分布式处理。二、大数据的应用场景:视频推荐、电商推荐等。

2025-02-18 11:37:45 199

原创 Scala的泛型

/ List(1,2,3,4,5) ==> 中间元素的下标 = 长度/2 ===> 3。//def 函数的名字(参数1: 类型1) : 返回值的类型 = {//需求:你是一个程序员,老板让你写一个函数,用来获取列表中的中间元素。//[T] 就是泛型, 类型参数化,把类型当做参数传入函数内部。

2024-12-11 17:02:20 393

原创 Scala隐式对象

/作用:给函数的隐式参数提供默认值。//作为函数的隐式参数的默认值。

2024-12-11 16:39:29 173

原创 Scala阶乘

/ 120 //写代码,完成1*2*3*...*d。// println("阶乘函数被调用",d)//需求:给整数添加一个功能,求阶乘。

2024-12-11 16:38:52 148

原创 Scala隐式类

/ transform(u1).updateUser() //希望要增添的新功能。//思路:把BaseUser 通过隐式转换,改成一个新类型,而这个新类型中有这个新类型。//任务:给之前的BaseUser添加新的功能,但是,不要直接去改代码。//implicit class === 一个隐式转换函数 + 类。//它的作用:拓展已有类的功能,而不需要去修改之前的类的代码。//10年,小王写的代码。

2024-12-11 15:37:35 193

原创 Scala函数的隐式参数

def sayName(implicit name:String = "小明"): Unit ={//困难:函数有一个默认参数值,在不传入具体的实参时,就会自动使用这个默认值。implicit val value:String = "小张"println("我的名字是:"+name)// 难点在于,这个默认值不能修改!sayName("小王")//一直在修改原来的代码!//函数参数的默认值。

2024-12-11 15:06:34 228

原创 Scala隐式转换2

/完成一个功能,让所有的字符串都能调用isPhone方法,来验证自己是不是一个手机号。//定义一个特殊的转换函数,把str ===> StrongString的对象。//验证是否身份证号。

2024-12-09 17:04:26 263

原创 Scala隐式转换

/隐式转换:编译器 偷偷地 自动的帮我们把一种数据类型转换为另一个类型。// 它有失败的时候(double --> int) 有成功的时候。// j = i //把 Int 转入 Double。// 例如: int --> double。println("implicit X 被调用了")//当它转换失败的时候,我们提供一个工具,让它能成功。i = j //把Double 转入 Int。//明确地,把double转成int。

2024-12-09 16:40:44 152

原创 Scala的正则表达式3

/ var str = "张先生,手机号:13812345678 13612345454 寝室号1345-01 你买的 xxx 到了"//reg.replaceAllIn的功能:在目标字符串str中,用正则表达式reg去查找,找到之后,用箭头函数 的返回值。// () 是分组,它不会影响正则表达式的查询结果,但是,它会把分组找到的内容单独保存到group中。// var str = "张先生,ID: 4290052000------56"//案例:把字符串中的身份证号打码。

2024-12-09 15:47:00 354

原创 Scala的正则表达式2

/ println(reg.matches(name5)) //matches对字符串做验证,返回boolean值。println(reg.matches(name2)) //matches对字符串做验证,返回boolean值。println(reg.matches(name4)) //matches对字符串做验证,返回boolean值。println(reg.matches(name5)) //matches对字符串做验证,返回boolean值。" // 不合法,!//验证用户名是否合格。

2024-12-09 15:46:09 180

空空如也

空空如也

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

TA关注的人

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