- 博客(61)
- 收藏
- 关注
原创 SparkSQL-基本使用
agg(sum($"quantity").as("total_quantity"), sum($"quantity" * $"price").as("total_sales")):对每个分组进行聚合操作,计算销售总量和销售总额,并分别命名为 total_quantity 和 total_sales。使用sql风格操作的前提是将DataFrame注册成一个临时表,在程序中直接使用spark.sql()方式执行SQL查询,结果将作为一个DataFrame返回。目标要求是:筛选出购买数量大于 5 的订单信息。
2025-05-16 00:16:31
232
原创 RDD的自定义分区器-案例
具体来说,将用户 ID 在 0 - 1000 的订单数据分到一个分区,1001 - 2000 的分到另一个分区,2001 及以上的分到第三个分区。对电商订单数据进行处理,订单数据包含用户 ID 和订单金额,不同地区的用户有不同的 ID 范围。我们会按照地区对订单数据进行分区,这样做能让相同地区的订单数据处于同一分区,便于后续按地区进行统计金额分析。对每个分区内的订单数据进行汇总,计算每个地区的订单总金额。使用自定义分区器对 RDD 进行分区操作,确保相同地区(用户 ID 范围相同)的订单数据处于同一分区。
2025-05-16 00:10:08
378
原创 自定义分区器-基础
这就类似于 Spark 中的分区,每个分区的数据可以在不同的计算节点上同时进行处理,从而加快整个数据处理的速度。:Spark 能够同时对多个分区的数据进行处理,充分利用集群的计算资源,进而加快作业的执行速度。在 Spark 中,分区是指将数据集按照一定的规则划分成多个较小的子集,每个子集可以独立地在不同的计算节点上进行处理,这样可以实现数据的并行处理,提高计算效率。在 Spark 中,RDD 是数据的集合,它会被划分成多个分区,这些分区可以分布在不同的计算节点上,就像图书馆的书架分布在不同的房间一样。
2025-05-16 00:00:24
1025
原创 Spark缓存--persist和cache方法
MEMORY_ONLY_SER:将 RDD 以序列化的 Java 对象形式存储在内存中,相较于 MEMORY_ONLY,序列化后占用的内存空间更小,但读取时需要进行反序列化操作,会带来一定的性能开销。cache:其实是 persist 方法的一种特殊情况,它等价于调用 persist(StorageLevel.MEMORY_ONLY),也就是将数据以非序列化的 Java 对象形式存储在内存中。MEMORY_AND_DISK:优先把 RDD 以 Java 对象的形式存储在 JVM 的内存中。
2025-05-15 23:50:03
173
原创 Spark缓存--RDD缓存
第二次调用collect时,因为之前已经调用了cache方法,并且结果已被缓存,所以不需要再次执行计算,直接从缓存中读取数据。通过对比两次计算的耗时,可以明显发现第二次计算耗时会远小于第一次(在数据量较大或计算复杂时效果更显著),这就体现了cache方法缓存计算结果、避免重复计算、提升后续操作速度的作用。当持久化某个RDD后,每一个节点都将把计算的分片结果保存在内存中,并在对此RDD或衍生出的RDD进行的其他动作中重用。这就是没有缓存的效果。时,该RDD将会被缓存在计算节点的内存中,并供以后重用。
2025-05-15 23:47:07
164
原创 Spark--RDD中的行动算子
行动算子是触发 Spark 计算的“触发点”,因为 Spark 的 RDD 是懒惰计算的,只有在执行行动算子时,才会真正开始计算。它会触发 Spark 作业的实际执行,对 RDD 中的所有元素进行计数,并将最终的计数结果返回给驱动程序。f: T => Unit:这是一个函数,它接收一个类型为 T 的元素(T 为 RDD 中元素的类型),并对该元素执行相应的操作,但不返回任何值(返回类型为 Unit)。返回值:返回一个包含 RDD 中所有元素的数组,数组元素的类型与 RDD 中元素的类型一致。
2025-05-15 23:36:34
347
原创 Spark--RDD中的转换算子
cache 对于重复使用的算子,进行cache做缓存使用,数据只保存在内存中,性能提升persist 性能提升checkPoint 数据容错,当数据计算的时候,机器挂了,重新追溯到checkPoint的目录下checkPoint是将RDD持久化到磁盘中,还可以切断RDD之间的依赖关系。这个函数 f 接收一个输入类型为 T 的元素,返回一个类型为 U 的元素。:对 RDD 中的每个元素应用函数 f,函数 f 返回一个可遍历的集合,然后将这些集合中的元素扁平化合并成一个新的 RDD。
2025-05-15 16:05:08
1103
原创 安装并配置Spark的环境变量
4.重命名,把解压后的文件夹改成spark-local。因为后续我们还会使用其他的配置方式,所以这里先重命名一次。mv是linux的命令。安装Spark的过程就是下载和解压的过程。接下来的操作,我们把它上传到集群中的节点,并解压运行。1.打开etc/profile.d/my_env.sh文件中,补充设置spark的环境变量。2.通过finalshell连接虚拟机,并上传安装文件到 /opt/software下。3.解压spark安装文件到/opt/module下。# 添加spark 环境变量。
2025-05-15 09:30:28
141
原创 Spark基础介绍
为了实现这样的要求,同时获得最大灵活性,Spark支持在各种集群管理器(Cluster Manager)上运行,包括Hadoop YARN、Apache Mesos,以及Spark自带的一个简易调度器,叫作独立调度器。例如,在机器学习和图计算等需要多次迭代的算法中,Spark 可以显著减少计算时间。Hadoop:Hadoop 的 MapReduce 编程模型相对较为底层和复杂,开发人员需要编写大量的代码来实现数据处理逻辑,尤其是在处理复杂的数据转换和多阶段计算时,代码量会非常庞大,开发和维护成本较高。
2025-05-15 09:27:29
862
原创 远程工具finalshell
4.找到刚才建立的连接,点击连接。弹层出现SSH安全警告,选择接受并保存。1.启动finalshell,新建连接。使用finalshell连接主机。
2025-05-15 09:19:54
432
原创 hdfs客户端操作-文件上传
接下来,我们向/maven下上传一个文件。要用到的api是put (或者copyFormLocalFile)。上传结束之后,回到hdfs的UI界面去检查是否成功。// 1 获取文件系统。
2025-05-15 09:11:39
284
原创 mysql数据库配置
假设要存储的数据包含四个字段:`userId`, `productId`, `score`, 和 `timestamp`。- **设定 JDBC 参数**:构建合适的连接字符串以及认证信息。- **调整性能选项**:采用批处理方式加快大数据量传输速度。- **确认连通性状况**:预先排除潜在网络或者安全层面障碍。- **配置用户权限**:赋予适当的操作权限给应用程序使用。- **实施索引策略**:增强未来可能涉及的各种查询效能。- **创建数据库和表**:设计适合存储数据的结构。
2025-05-14 11:25:43
253
原创 mapreduce
该阶段编程模型中有一个 reduce 函数需要开发人员重写,reduce 函数的输入也是一个 <key, value> 对,reduce 函数的输出也是一个 < key,List<value>> 对。Reduce是会跨节点fetch属于自己的数据,并进行处理,把结果进行汇总,存储到HDFS。该阶段的编程模型中会有一个 map 函数需要开发人员重写,map 函数的输入是一个 < key,value > 对,map 函数的输出也是一个 < key,value > 对,key和value的类型需要开发人员指定。
2025-05-14 08:55:47
427
原创 数据清洗-日志
在之前的项目的基础之上,重写去写一个包,并创建两个类:WebLogMapper和WebLogDriver类。// 1. 获取一行数据,使用空格进行拆分,判断是否有8个字段。// 这条数据是有意义的,保留。去除日志中字段个数小于等于11的日志。// 设置reducetask个数为0。(1)编写WebLogMapper类。(2)编写WebLogDriver类。// 5 设置输入和输出路径。// 4 设置最终输出类型。// 1 获取job信息。// 2 加载jar包。// 3 关联map。
2025-05-14 08:53:33
570
原创 自定义分区器
(1)它用来将map方法生成的键值对,按照指定的规则来进行分区。这个泛型类的泛型是map方法输出的k2,v2的数据类型。// 分配到Reducer 0。// 分配到Reducer 1。(3)每个map生成的键值对,都会调用这个方法来得到它对应的分区号。// 根据单词的首字母分配分区。(2)它返回的分区号是从0开始,且是连续的。
2025-05-14 08:52:31
114
原创 序列化-流量统计
/1 遍历values,将其中的上行流量,下行流量分别累加。//3 抓取我们需要的数据:手机号,上行流量,下行流量。//3 关联Mapper和Reducer。//1 获取一行数据,转成字符串。//5 写出outK outV。//3 写出outK outV。//2 关联本Driver类。//1 获取job对象。//5 设置程序最终输出的KV类型。//4 设置Map端输出KV类型。//6 设置程序的输入输出路径。
2025-05-14 08:51:40
391
原创 安装Spark
4.重命名,把解压后的文件夹改成spark-local。因为后续我们还会使用其他的配置方式,所以这里先重命名一次。mv是linux的命令。1.打开etc/profile.d/my_env.sh文件中,补充设置spark的环境变量。2.使用 source /etc/profile 命令让环境变量生效。,并上传安装文件到 /opt/software下。文件到/opt/module下。# 添加spark 环境变量。
2025-05-14 08:50:08
198
原创 配置集群。。。
echo " =================== 启动 hadoop集群 ==================="echo " =================== 关闭 hadoop集群 ==================="echo " --------------- 启动 yarn ---------------"echo " --------------- 关闭 yarn ---------------"分发/home/root/bin目录,保证自定义脚本在三台机器上都可以使用。
2025-05-14 08:49:00
294
原创 安装和使用Maven
下载最新版本的 Maven 压缩包(`apache-maven-<version>-bin.zip`)。- 在“变量值”中输入 Maven 的安装路径,例如 `D:\Apache\maven`。- 在“环境变量”窗口中,找到并选择 `Path` 环境变量,然后点击“编辑”按钮。- 右键点击“此电脑”或“我的电脑”,选择“属性”。- 在“系统属性”窗口中,点击“环境变量”按钮。- 在“编辑环境变量”窗口中,点击“新建”按钮。- 在“环境变量”窗口中,点击“新建”按钮。1. 下载 Maven。
2025-05-07 08:17:00
199
原创 虚拟机配置IP
linux中,ip地址是写在配置文件(/etc/sysconfig/network-scripts/ifcfg-ens33)中,这里使用 vi 编辑器去修改即可!如果不进行设置,每次启动机器时都可能是随机的IP,不方便我们后续操作。注意:这里的第三个部分的10并不是固定的,我们自己可以约定,但是约定之后就要固定下来。让所有的vm配置的虚拟机使用NAT时,它们的网段都是一致的。(2)配置Windows本地虚拟网卡,让本机也可以访问虚拟机。具体设置为:进入虚拟机,修改对应的IP。(3)设置虚拟机的IP。
2025-05-07 08:13:56
217
原创 带你一分钟了解yarn
它负责一个应用程序中具体任务的执行,比如mapreduce应用的map任务,reduce任务,每一个应用都有一个ApplicationMaster,它受ApplicationsManager管理,ApplicationMaster进程如果非正常死亡,ApplicationsManager可以重启它。NodeManager节点资源管理器,是每台机器的框架客户端/代理,负责Container容器管理,监控他们的资源使用,并汇报给ResourceManager/Scheduler。
2025-04-18 15:28:13
680
原创 Linux常见操作命令(2)
ls命令可以查看文件夹下的文件信息,如果某个文件夹下的文件特别多,使用ls命令时,就只能显示后面一部分文件信息,那如果我们希望查看全部的文件信息,就需要用到管道运算符。我们要去下载安装新的软件时就需要用到它:下载下来的软件大多都是.tar格式,而安装的过程就是解压缩。把1.txt,2.txt,3.txt 压缩到 test.tar 文件(会被自动创建)中。如果这个文件不存在,就会顺手创建这个文件。ls用来显示文件夹下的文件信息,more用来翻页,而 | 就可以把前一个的结果作为输入传递给 more。
2025-03-31 20:18:35
379
原创 hadoop集群的常用命令
hadoop fs -count / # 统计文件数量,返回的数据是目录个数,文件个数,文件总计大小,输入路径。hadoop fs -du -s -h / #统计这个文件夹总大小,返回的数据是,文件夹大小,备份总大小。hadoop fs -du -h / # 统计文件夹下每个文件的大小。把hdfs一堆小文件合并到本地的一个文件中。查看yarn正在运行的任务列表。查找yarn已经完成的任务列表。查找yarn所有任务列表。
2025-03-31 20:15:07
234
原创 mapreduce的工作原理
第二次: Maptask多次溢写产生的多个溢写文件(单个文件每部k有序),要做归并排序,maptask每个分区内,只保留1个文件(key有序)第三次: ReduceTask-0汇总多个MapTask的(对应分区-0)结果文件,归并排序(合并排序)Partitioner.getPartition(k,v,reduceTask数量)--分区号。3. mapper.map执行完毕后,输出k-v,调用k-v的分区计算。③ 将key相同的多个value--->[v,v,v,v]k(偏移量)-v(行数据)
2025-03-31 20:08:58
338
原创 vi常见操作命令
1,$s/client/server/gc 从第一行到最后一行中将client关键字全部替换为server,且每次替换都需要提示确认。可以将编辑任务暂时放到后台,比如你在编辑到一半的时候想查看另外一个文件的信息,这时可以在一般模式下按ctrl+z。:1,$s/client/server/g 从第一行到最后一行中将client关键字全部替换为server。/word 向下搜索word这个关键字,按n往前找,按N往回找。word 向上搜索word这个关键字,按n往前找,按N往回找。ctrl+d 向下翻半页。
2025-03-03 20:03:29
134
原创 安装Linux操作系统
这里讲一下软件选择,一般习惯windows的用户选择GNOME桌面,安装完就是图形界面,选择最小化安装的话就是全字符界面,不推荐新手使用;带感叹号的是需要确认的,如果你暂时不需要添加另外磁盘,进入安装位置,然后点击完成即可;网络和主机名可以安装完再配置,也可以现在配置,如果你不需要使用固定IP的话,打开网卡开关,点击完成即可;点击ROOT密码,设置你的root用户密码,点击完成;点击LICENSE INFORMATION,勾选我同意许可协议,点击完成,然后点击完成配置;选择你需要的语言,然后点击前进;
2025-03-03 20:00:13
336
原创 如何配置VM虚拟机
这里我重点讲一下,网络中本身存在DHCP服务器的(比如家用路由器的)可以选择使用桥接网络,选择桥接网络就相当于虚拟机和本机同处一个网络当中,相当于你另外又插了一台电脑在家用路由器上;硬件兼容性选择的话可以默认,如果你需要从低版本workstation中将虚拟机拷贝到17中使用的话需要选择旧版本的版本号,例如你原本用的是workstation14,然后想将虚拟机拷贝到workstation17中使用,那你这里就要选workstation 14.x;磁盘空间看着给,别超过你要放的那个盘容量就行;
2025-03-03 19:53:19
413
原创 如何安装VM虚拟机
附官方下载链接(VM 17 pro):https://download3.vmware.com/software/WKST-1701-WIN/VMware-workstation-full-17.0.1-21139696.exe。修改VM安装路径,勾选将VMware Workstation控制台工具添加到系统PATH,下一步;点击完成,VMware Workstation 17 pro安装完成。点击许可证后在下图框中输入许可证,然后点击输入;有许可点击许可证,无许可点击完成;
2025-03-03 19:44:02
291
原创 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] 表示泛型,它约定列表中每一个元素都是Int类型。//List[Int]:List是列表,[Int]是说列表中的每一个元素都是int!// 中间位置的下标 = 长度/2。//(1)可以有多个。
2024-12-11 11:29:12
342
原创 Scala:正则表达式
/ reg1.findAllIn("136123456781").toList.foreach(println) //非贪婪。// reg1.findAllIn("136123456781").toList.foreach(println) //贪婪。//6.脱字符 ^ 如果在正则的最前面,表示,要匹配的内容必须在字符串的开头。//7.脱字符 $ 如果在正则的最后边,表示,要匹配的内容必须在字符串的结尾。// val reg1="\\d{3,6}".r //贪婪模式。
2024-12-04 14:46:06
1065
原创 Scala:习题(找出所需内容,把最后的结果写入一个新文件中)
writer.println(s"姓名:${s.name},语文:${s.yuwen},数学:${s.shuxue},英语:${s.yingyu},总分:${s.zongfen},平均分:${s.pinjunfen}")// println("语文:",arr(1).toInt)// println("数学:",arr(2).toInt)// println("英语:",arr(3).toInt)// println("平均分:",total/3)
2024-12-03 15:06:34
285
原创 Scala:守卫语句格式
/ case Array(1,x,y)=>println(s"三个元素,且第一个为1,第二个是${x},第三个是${y}")case Array(1,x,y)=>println(s"3个元素,且第一个为1,第二个是${x},第三个是${y}")// case _:Int =>println(s"$x 是Int 类型的")//_:Int 表示变量是Int类型。// case Array(1,_*)=>println("n个元素,且第一个为1")
2024-12-03 15:04:21
977
原创 Scala:打印指定信息
"周鸿祎 - 360" -> 1970, // 杀毒软件 3Q大战。"马云 - 阿里巴巴" -> 1964, // 猫。"马化腾 - 腾讯" -> 1971, // QQ。"丁磊 - 网易" -> 1971, // 猪厂。"刘强东 - 京东" -> 1974, // 狗。"张一鸣 - 字节跳动" -> 1983,"陈天桥-盛大网络" ->1973,"雷军 - 小米" -> 1969,"程维 - 滴滴" -> 1983,"张小龙-微信" ->1969,"贾跃亭-乐视" ->1973,
2024-12-03 14:55:54
248
原创 Scala:根据身份证号码,输出这个人的籍贯
case _ => println("我不知道!case "42"=>println("湖北")case "42"=>println("浙江")case "42"=>println("北京")case "42"=>println("上海")// println("未知", provice)// println("湖北")// println("浙江")// println("北京")// println("上海")
2024-11-26 17:50:34
404
原创 Scala:Scala的Map集合
Scala的Map有两种类型,即可变的和不可变的。上述创建Map的方式是不可变的,如果想创建可变的Map,需要导人指定的包,创建方式与不可变的方式相同。Map(映射)是一种可迭代的键值对(Key/Value)结构,所有值都可以通过键来获取,Map中的键都是唯一的。在Scala中,有两种创建Map的方式,分别是Map(k1->v1,k2->v2,..) 和 Map((k1,v1),(k2,v2),..)。第二种方式 Map((k1,v1),(k2,v2),..)是通过元组的方式定义的。
2024-11-10 22:56:51
458
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人