酒城译痴无心剑
国家三级笔译。一手代码一手诗,酸甜苦辣寸心知。杏坛泊梦千秋事,万古云山日迟迟。讲授高等数学、Java高级程序设计、动态网站设计与开发(JSP、Servlet)、企业信息系统设计与开发(Spring Boot)、智能移动终端应用开发(Android)、Python Web开发(Django)、大数据离线分析(Hadoop、Hive、Spark)、计算机专业英语等课程,教学深入浅出,语言生动、经验丰富,深受学生好评。指导学生参加移动应用开发省赛和国赛,多次获奖,被授予优秀指导教师称号。热爱翻译,曾翻译西奥尼·帕帕斯数学科普读物《天天数学》与两千余首诗词,已形成独特的译诗风格。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
SparkSQL函数综合实践
本次实战通过使用 Spark 和 Hive 进行数据分析,展示了从项目创建、依赖配置、数据加载到查询分析的完整流程。首先,我们创建了 Hive 表并加载了 JSON 数据,随后通过 Spark SQL 查询每个城市工资最高的前 N 名员工。实战中,我们使用了 SparkSession 初始化、Hive 表操作、数据加载及窗口函数等技术,实现了数据的高效处理与分析。通过本次实战,我们掌握了 Spark 和 Hive 的基本操作,并学会了如何在大数据场景下进行数据分析和处理。原创 2025-01-21 23:36:18 · 813 阅读 · 0 评论 -
Spark RDD案例:统计网站每月访问量
这个项目利用Spark技术,通过统计网站访问记录中的日期信息,实现了对每月访问量的统计和排序。通过分析数据,我们可以了解到不同月份的网站访问情况,为进一步优化网站内容和推广策略提供数据支持。原创 2024-05-15 18:37:49 · 1567 阅读 · 0 评论 -
任务4.8.4 利用Spark SQL实现分组排行榜
本实战任务展示了如何使用Spark SQL对数据进行分组和TopN计算,这是大数据领域中常见的数据处理需求。通过Spark SQL的窗口函数,可以方便地实现复杂的数据分析任务。原创 2024-06-22 19:58:58 · 1275 阅读 · 0 评论 -
3.3 掌握RDD分区
本实战任务旨在掌握Spark RDD 的分区操作,包括理解 RDD 分区的概念、作用、分区数量的确定原则以及如何通过自定义分区器来优化数据处理。通过创建一个 Maven 项目并编写 Scala 代码,实现了一个自定义的科目分区器 SubjectPartitioner,该分区器能够根据科目将数据分配到不同的分区中。原创 2025-05-15 19:03:14 · 255 阅读 · 0 评论 -
1.2 Scala变量与数据类型
在本次Scala变量与数据类型的学习中,我们深入掌握了变量和常量的声明与使用。通过`val`声明的常量只能赋值一次,而`var`声明的变量可以多次赋值,但类型不可更改。我们还学习了多行字符串的定义方式,以及如何通过`stripMargin`去除前导空格。在数据类型方面,Scala的类型层次结构清晰,`Any`类型分为`AnyVal`(基本类型)和`AnyRef`(引用类型),并引入了`Unit`和`Nothing`两种特殊类型。此外,我们还探讨了不同类型之间的转换方法……原创 2025-02-27 11:10:43 · 512 阅读 · 0 评论 -
4.1.1 Spark SQL概述
Spark SQL是Apache Spark的一个模块,专门用于处理结构化数据。它引入了DataFrame这一编程抽象,DataFrame是带有Schema信息的分布式数据集合,类似于关系型数据库中的表。用户可以通过SQL、DataFrames API和Datasets API三种方式操作结构化数据。Spark SQL的发展经历了从Hive on Spark到Shark,再到完全独立的Spark SQL的过程,不断优化性能和功能。原创 2025-05-29 14:31:29 · 699 阅读 · 0 评论 -
RDD实战:扁平映射算子 - flatMap()
通过使用扁平映射算子`flatMap()`,我们可以将RDD中的每个元素转换为0到多个输出元素,并自动将这些输出元素扁平化为一个单独的RDD。实战中展示了如何利用`flatMap()`进行单词个数统计和不规则二维列表元素的处理,体现了其强大的数据处理功能。原创 2024-05-28 21:04:15 · 220 阅读 · 0 评论 -
4.2.5 Spark SQL 分区自动推断
在本节实战中,我们学习了Spark SQL的分区自动推断功能,这是一种提升查询性能的有效手段。通过创建具有不同分区的目录结构,并在这些目录中放置JSON文件,我们模拟了一个分区表的环境。使用Spark SQL读取这些数据时,Spark能够自动识别分区结构,并将分区目录转化为DataFrame的分区字段。原创 2025-05-31 08:00:25 · 980 阅读 · 0 评论 -
2.2.2 Spark单机版环境
本文介绍了如何搭建和使用Spark单机版环境。首先,确保安装配置好JDK,然后从群共享下载Spark安装包并上传至云主机的`/opt`目录。接着,解压到`/usr/local`目录并配置环境变量,通过`spark-submit --version`验证安装成功。在使用Spark单机版环境时,可以运行示例程序计算圆周率,进入交互式Spark运行环境完成简单任务,如计算1 + 2 + … + 100和打印九九表。还可以通过Scala版Spark操作RDD……原创 2025-03-27 10:25:15 · 413 阅读 · 0 评论 -
1.5.7 掌握Scala内建控制结构 - 变量作用域
本次实战深入理解了Scala中变量作用域的概念,通过两个任务演示了作用域的基本规则。在任务1中,我们创建了一个名为`ScopeDemo01`的对象,展示了内部作用域能够访问外部作用域的变量。通过在if语句块中访问在外部定义的`message`变量,我们验证了内部可以访问外部变量的原则。任务2则尝试演示外部不能访问内部变量的情况,我们尝试在外部访问在内部定义的`message`变量,结果出现了“无法解析在内部定义的符号`message`”的错误提示,这证明了外部作用域不能访问内部作用域的变量。原创 2025-03-20 11:58:57 · 237 阅读 · 0 评论 -
修改云主机配置 - 内存增容
在今天的Spark课程中,我们深入学习了数据集和数据帧的操作方法。然而,我注意到云主机的内存几乎被耗尽,这导致了系统运行时的卡顿,有时甚至会导致Spark Shell的强制退出。为了确保课程的顺利进行,我需要对云主机的配置进行调整,特别是增加内存容量,以满足我们学习过程中对计算资源的需求。原创 2024-06-04 15:32:13 · 537 阅读 · 3 评论 -
Scala实战:打印九九表
本次实战的目标是使用不同的方法实现打印九九表的功能。我们将通过四种不同的方法来实现这个目标,并在`day02`子包中创建相应的对象。原创 2024-04-11 12:04:37 · 511 阅读 · 0 评论 -
1.5.1 掌握Scala内建控制结构 - 条件表达式
本文介绍了 Scala 中条件表达式的使用及其在实际任务中的应用。条件表达式的语法为 `if (条件) 值1 else 值2`,其结果类型取决于值1和值2的类型。如果类型相同,结果类型与它们相同;如果不同,则结果类型为 `Any`。通过两个任务展示了条件表达式的功能。原创 2025-03-06 11:59:27 · 438 阅读 · 0 评论 -
5.2 初识Spark Streaming
在本节实战中,我们初步探索了Spark Streaming,它是Spark的流式数据处理子框架,具备高吞吐量、可伸缩性和强容错能力。我们了解了Spark Streaming的基本概念和运行原理,并通过两个案例演示了如何利用Spark Streaming实现词频统计。原创 2025-05-31 11:39:21 · 637 阅读 · 0 评论 -
2.3 Spark运行架构与流程
Spark运行架构与流程包括几个核心概念:Driver负责提交应用并初始化作业,Executor在工作节点上执行任务,作业是一系列计算任务,任务是作业的基本执行单元,阶段是一组并行任务。Spark支持多种运行模式,包括单机、Standalone集群、YARN和Mesos集群,以及高可用集群。运行流程包括资源申请、分配、反馈、反向注册和任务提交。Driver与Cluster Manager通信,管理资源和任务,Executor向Driver注册并执行任务。整个流程确保了Spark应用的高效执行和资源的合理利用原创 2025-04-10 16:23:56 · 616 阅读 · 0 评论 -
任务5.1 初识Spark Streaming
实现一个实时词频统计系统,能够处理流式数据并统计文本中的单词出现频率。原创 2024-06-23 11:17:27 · 778 阅读 · 0 评论 -
4.1.4 基于数据帧做SQL查询
在本节实战中,我们探讨了如何基于Spark DataFrame执行SQL查询。首先,我们学习了如何通过`createOrReplaceTempView`方法将DataFrame注册为一个临时视图,以便在SQL查询中使用。接着,我们使用`spark.sql`方法执行了各种SQL查询,包括投影、选择、统计和排序操作。原创 2025-05-29 15:04:19 · 362 阅读 · 0 评论 -
3.1 掌握RDD的创建
在Apache Spark中,RDD(Resilient Distributed Dataset)是一个基本的、不可变的、分布式的和可分区的数据集。它能够自动进行容错处理,并支持在大规模集群上的并行操作。RDD之间存在依赖关系,可以实现管道化,避免了中间数据的存储。原创 2024-05-23 12:33:32 · 420 阅读 · 0 评论 -
Spark SQL - 操作数据帧
本教程将通过一个具体的案例来演示如何在Spark SQL中操作数据帧。我们将从获取学生数据帧开始,包括两种方法:一是由数据集转换而来,二是直接读取文件生成数据帧。然后,我们将对数据帧进行各种操作,如投影、过滤、统计和排序等。原创 2024-06-04 13:22:02 · 778 阅读 · 0 评论 -
3.8.1 利用RDD实现词频统计
在本次实战中,我们通过Spark的RDD实现了词频统计功能。首先,准备了包含单词的文件并上传至HDFS。接着,采用交互式方式逐步完成词频统计,包括创建RDD、单词拆分、映射为二元组、按键归约以及排序等操作。此外,还通过创建Maven项目,配置依赖、添加Scala SDK、创建日志属性文件和HDFS配置文件,最终编写并运行Scala程序,实现了词频统计并将结果输出到HDFS。原创 2025-05-22 08:56:56 · 510 阅读 · 0 评论 -
3.2.3 掌握RDD转换算子 - 5. 合并算子 - union()
在本节课中,我们学习了Spark RDD的`union()`算子,它能够将两个数据类型一致的RDD合并为一个新的RDD,主要用于整合不同数据源。通过案例演示,我们成功将两个简单的数字RDD合并,直观地看到合并结果是按原顺序纵向拼接,不会自动去重。原创 2025-05-08 17:15:16 · 484 阅读 · 0 评论 -
1.3 使用Scala集成开发环境
搭建Scala的IntelliJ IDEA开发环境,安装JDK8和IDEA 2022.3,创建Scala项目,编写类和对象,运行程序。原创 2024-04-02 10:13:19 · 876 阅读 · 0 评论 -
修改SSH端口实战
本次实战主要涉及SSH端口的修改和配置。首先,对master、slave1和slave2三台云主机的SSH配置文件进行修改,指定新的SSH端口,并重启SSH服务。接着,通过FinalShell工具修改连接端口,实现SSH连接到三台云主机。原创 2025-06-21 18:57:06 · 229 阅读 · 0 评论 -
4.8.4 利用Spark SQL实现分组排行榜
在本次实战中,我们的目标是利用Spark SQL实现分组排行榜,特别是计算每个学生分数最高的前3个成绩。任务的原始数据由一组学生成绩组成,每个学生可能有多个成绩记录。我们首先将这些数据读入Spark DataFrame,然后按学生姓名分组,并使用窗口函数对学生成绩进行降序排序。通过row_number()函数为每个分组的成绩分配行号,筛选出行号小于等于3的记录,即为每个学生分数最高的前3个成绩。原创 2025-05-28 17:37:56 · 647 阅读 · 0 评论 -
3.2.3 掌握RDD转换算子 - 6. 排序算子 - sortBy()
本任务通过Spark的RDD `sortBy()` 算子实现了对数据的排序操作。`sortBy()` 算子可以根据指定的规则对RDD中的元素进行排序,支持升序(默认)和降序排列。通过案例演示,我们学习了如何按三元组的第三个值进行降序排列。在课堂练习中,进一步扩展了排序需求,分别实现了先按性别升序再按年龄降序排列,以及先按性别降序再按年龄降序排列的复杂排序任务。原创 2025-05-15 09:30:02 · 746 阅读 · 0 评论 -
将单列数据帧转换成多列数据帧
在本次实战中,我们的目标是将存储在HDFS上的以逗号分隔的文本文件`student.txt`转换为结构化的Spark DataFrame。原创 2024-06-04 13:48:06 · 362 阅读 · 1 评论 -
4.2.4 Spark SQL 数据写入模式
在本节实战中,我们详细探讨了Spark SQL中数据写入的四种模式:ErrorIfExists、Append、Overwrite和Ignore。通过具体案例,我们演示了如何使用`mode()`方法结合`SaveMode`枚举类来控制数据写入行为。我们首先读取了一个JSON文件生成DataFrame,然后分别采用覆写、追加、忽略和存在报错模式将数据保存到HDFS。原创 2025-05-31 07:08:04 · 582 阅读 · 0 评论 -
5.1 初探大数据流式处理
在本节中,我们深入探讨了大数据流式处理的基础知识和关键技术。首先,我们区分了批式处理和流式处理两种大数据处理方式,了解了它们各自的适用场景和特点。流式处理以其低延迟和高实时性适用于需要快速响应的场景,而批式处理则适用于对实时性要求不高但需要全面分析的场景。接着,我们讨论了流式计算的五大特征:实时性、易失性、突发性、无序性和无限性,以及流式计算的关键技术,包括系统架构、数据传输、编程接口和高可用技术等。原创 2025-05-31 08:10:32 · 311 阅读 · 0 评论 -
2.4 IDEA开发词频统计项目
掌握本地模式执行Spark程序;掌握集群模式执行Spark程序原创 2024-05-14 13:17:10 · 292 阅读 · 0 评论 -
任务3.8.3 利用RDD统计每日新增用户
本实战概述展示了如何使用 Apache Spark 的 RDD 来处理和分析用户访问数据,以统计每日的新增用户数。通过交互式实现和项目化实现两种方式,本概述提供了详细的步骤和代码示例,确保了任务的可操作性和可复现性。原创 2024-06-18 11:46:15 · 724 阅读 · 0 评论 -
1.5.6 掌握Scala内建控制结构 - match结构
本次实战练习了Scala内建控制结构中的match语句,它类似于其他编程语言中的switch语句,但更为强大和灵活。通过match语句,我们可以根据不同的条件执行不同的代码块,且不需要显式地使用break来退出。在案例演示中,我们创建了一个`CommentOnCity`对象,根据用户输入的城市名称,使用match语句给出相应的评语。原创 2025-03-20 11:54:25 · 544 阅读 · 0 评论 -
SparkSQL数据模型综合实践
在本次实战中,创建一个名为`DataModel`的`Spark SQL`数据模型对象,用于演示如何加载数据集、过滤数据以及计算统计信息。首先,在项目根目录下创建`data`目录,并在其中创建了包含员工信息的`employees.json`文件。然后,创建`DataModel`对象,并定义`spark`常量以及三个方法:`loadData()`、`filterAge()`和`avgSalary()`,分别用于加载数据、过滤年龄大于`20`岁的员工和计算不同性别的平均工资。原创 2025-01-16 11:49:17 · 989 阅读 · 0 评论 -
4.2.3 Spark SQL 手动指定数据源
在本节实战中,我们学习了如何在Spark SQL中手动指定数据源以及如何使用`format()`和`option()`方法。通过案例演示,我们读取了不同格式的数据文件,包括CSV、JSON,并从JDBC数据源读取数据,展示了如何将这些数据转换为DataFrame,并保存为不同的文件格式。例如,我们将CSV文件读取为DataFrame,并设置了表头和分隔符,然后将JSON文件保存为Parquet和CSV格式。此外,我们还从MySQL数据库读取数据并将其保存为JSON文件。原创 2025-05-30 19:22:43 · 825 阅读 · 0 评论 -
RDD实战:按键归约算子 - reduceByKey()
通过使用按键归约算子`reduceByKey()`,我们可以对RDD中key相同的元素进行聚合操作,如求和。实战中展示了如何利用`reduceByKey()`统计学生的总分,体现了其在处理键值对数据时的强大功能。原创 2024-05-28 21:07:14 · 148 阅读 · 0 评论 -
3.2.4 掌握RDD行动算子
本任务通过掌握Spark的RDD行动算子,学习了如何对分布式数据集进行各种操作。行动算子是触发实际计算并返回结果的操作,包括归约(reduce)、采集(collect)、首元素(first)、计数(count)、按键计数(countByKey)、前截取(take)、排序前截取(takeOrdered)、遍历(foreach)和存文件(saveAsTextFile)等。原创 2025-05-15 16:29:02 · 196 阅读 · 0 评论 -
Linux上安装Scala
今天我们将一起在Linux系统上安装Scala,并演示其基础功能。Scala是一种多范式的编程语言,集成了面向对象编程和函数式编程的特性,非常适合构建大规模、高可靠性的软件系统。原创 2024-03-19 12:00:49 · 1312 阅读 · 0 评论 -
3.2.3 掌握RDD转换算子 - 9. 交集算子 - intersection()
本任务通过Spark的RDD `intersection()` 算子,学习了如何对两个RDD进行交集操作。`intersection()` 算子返回两个RDD的公共元素,要求两个RDD的类型必须一致。案例演示中,我们分别创建了两个整数RDD和两个键值对RDD,并通过`intersection()`算子计算了它们的交集。通过查看交集结果,我们验证了RDD交集运算满足交换律,即`rdd1.intersection(rdd2)`与`rdd2.intersection(rdd1)`的结果相同。原创 2025-05-15 11:17:12 · 333 阅读 · 0 评论 -
3.2.3 掌握RDD转换算子 - 10. 去重算子 - distinct()
本任务通过Spark的RDD `distinct()` 算子,学习了如何对RDD中的数据进行去重操作。`distinct()` 算子会移除RDD中的重复元素,返回一个新的RDD,类似于集合的去重特性。在案例演示中,我们创建了一个包含重复整数的RDD,并通过`distinct()`算子去重,最后通过`collect`方法查看了去重后的结果。原创 2025-05-15 11:51:28 · 444 阅读 · 0 评论 -
3.2.3 掌握RDD转换算子 - 7. 按键排序算子 - sortByKey()
本任务通过Spark的RDD `sortByKey()` 算子,学习了如何对(key, value)形式的RDD进行按键排序。`sortByKey()` 是 `sortBy()` 的特例,专门用于按键排序,默认升序,可通过传入`false`实现降序。案例演示中,我们基于二元组列表创建了RDD,并分别实现了按键升序和降序排列,通过`collect`操作查看了排序结果。原创 2025-05-15 10:50:16 · 391 阅读 · 0 评论 -
2.2.3 Spark Standalone集群
搭建Spark Standalone集群需要完成多个步骤。首先,配置主机名、IP地址映射、关闭防火墙和SeLinux,并设置免密登录。接着,配置JDK和Hadoop环境,并在所有节点上分发配置。然后,下载并安装Spark,配置环境变量和`spark-env.sh`文件,编辑`workers`文件以包含所有工作节点。之后,将Spark分发到所有从节点并使配置生效。启动HDFS和Spark服务后,可以通过Web UI访问集群状态。原创 2025-04-10 11:59:38 · 708 阅读 · 0 评论
分享