
Spark
文章平均质量分 94
武子康
Hi, I'm Zikang / 武子康
好奇心驱动的探索者 | INTJ / INFJ
我热爱探索一切值得深究的事物。对技术、成长、效率、认知、人生有着持续的好奇心和行动力。
坚信「飞轮效应」,相信每一次微小的积累,终将带来深远的改变。
展开
-
大数据-270 Spark MLib - 基础介绍 机器学习算法介绍 WordCount 代码编写 三个测试案例
SparkMLib 是Spark的机器学习库(Machine Learning),封装了一些通用机器学习算法和工具,便于我们开展机器学习实践。常用算法:包括类、回归、聚类和协同过滤特征化工具:包括特征提取、转换、降维和选择工具管道:用于构建、评估和调整机器学习管道的工具持久化工具:保存和加载算法、模型、管道其他工具:线性代数、统计、数据处理等。原创 2025-03-10 14:18:43 · 7209 阅读 · 0 评论 -
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
上节研究了SparkGraphX基本概念、基础架构等内容,本节研究Spark GraphX的案例,放了3个案例,图的基本计算、连通图算法、寻找相同的用户。图本身是递归数据结构,顶点的属性依赖于它们的邻居的属性,这些邻居的属性又依赖于自己的邻居的属性。所以需要重要的算法都是迭代的重新计算每个顶点的属性,直到满足某个确定的条件。问题:在以下数据中,找到同一个用户,合并相同用户的数据。一系列的图并发抽象被提出来用来表达这些迭代算法。GraphX公开了一个类似Pregel的操作。给定数据文件,找到存在的连通体。原创 2024-08-28 09:52:55 · 5087 阅读 · 3 评论 -
大数据-105 Spark GraphX 基本概述 与 架构基础 概念详解 核心数据结构
上节研究Spark Streaming Kafka的Offsets管理,通过Redis进行管理操作。本节研究Spark GraphX 是 Spark 一个组件,专门用来表示图以及进行图的并行计算。GraphX通过重新定义了图的抽象概念来拓展了RDD:定向多图,其属性附加到每个顶点和边。为了支持图计算,GraphX公开了一系列基本运算(比如:mapVertices、mapEdges、subgraph)以及优化后的 Pregel API 变种。此外,还包含越来越多的图算法和构建器,以简化图形分析任务。原创 2024-08-28 08:50:05 · 4649 阅读 · 1 评论 -
大数据-104 Spark Streaming Kafka Offset Scala实现Redis管理Offset并更新
上节研究了SparkStreaming Kafka的Offset管理,同时使用Scala实现了自定义的Offset管理。本节继续研究,使用Redis对Kafka的Offset进行管理。Redis 作为一个高效的内存数据库,常用于存储 Spark Streaming 中的 Kafka 偏移量。通过手动管理偏移量,你可以在每批次数据处理后,将当前批次的 Kafka 偏移量存储到 Redis 中。这样,在应用程序重新启动时,可以从 Redis 中读取最后处理的偏移量,从而从正确的位置继续消费 Kafka 数据。原创 2024-08-27 09:33:12 · 7294 阅读 · 13 评论 -
大数据-103 Spark Streaming Kafka Offset管理详解 Scala自定义Offset
上节研究了Spark Streaming 与Kafka的关系,研究了08、10版本的不同的,研究了Producer、KafkaDStream,并且附带实例代码。在 DStream 初始化的时候,需要指定每个分区的Offsets用于从指定位置读取数据读取并处理消息处理完之后存储结果数据用虚线存储和提交 Offset,敲掉用户可能会执行一系列操作来满足他们更加严格的语义要求。原创 2024-08-27 09:24:24 · 4894 阅读 · 0 评论 -
大数据-102 Spark Streaming Kafka ReceiveApproach DirectApproach 附带Producer、DStream代码案例
上节研究了Spark Streaming DStream有状态转换和对应的转换案例,本节研究Streaming Kafka,各种版本的接口,ReceiverApproach、DirectApproach,附带测试的代码案例。基于 Receiver 的方式使用 Kafka 旧版本消费者高阶 API 实现。对于所有的 Receiver,通过 Kafka 接收的数据被存储于 Spark 的 Executors 上,底层是写入 BlockManager中原创 2024-08-26 10:45:00 · 4282 阅读 · 5 评论 -
大数据-101 Spark Streaming DStream转换 窗口操作状态 跟踪操作 附带多个案例
上节研究了SparkStreamingDStream转换函数,无状态转换与对应的几个案例的实现。本节研究DStream转换,窗口操作、跟踪操作,附带了几个案例。对于没有数据输入,则不会返回那些没有变化的Key的数据,即使数据量很大,checkpoint也不会像updateStateByKey那样,占用太多的存储。基于窗口的操作会在一个比 StreamingContext 的 batchDuration(批次间隔)更长的时间范围内,通过整合多个批次的结果,计算出整个窗口的结果。原创 2024-08-26 10:24:24 · 3261 阅读 · 0 评论 -
大数据-100 Spark 集群 Spark Streaming DStream转换 黑名单过滤的三种实现方式
上节研究了Spark Streaming 基础数据源,文件流、Socket流、RDD队列流等内容,基础概念、代码实例等等。本节研究DStream的转换,同时附带一个 黑名单过滤业务的实现案例,包含三种实现的方式。一个功能强大的函数,它可以允许开发者直接操作其内部的RDD,也就是说开发者,可以任意提供一个RDDToRDD的函数,这个函数在数据流每个批次中都被调用,生成一个新的流。原创 2024-08-24 09:53:43 · 5503 阅读 · 3 评论 -
大数据-99 Spark 集群 Spark Streaming DStream 文件数据流、Socket、RDD队列流
上节研究了SparkStreaming基础概述、架构概念、编程模型、优缺点概括等内容。本节研究Spark Streaming DStream 文件数据数据流、Socket、RDD队列流等内容。每秒创建一个RDD(RDD存放1-100的整数),Streaming每隔1秒就对数据进行处理,计算RDD中数据除10取余的个数。] 也会只启动一个线程,该线程用于 Receiver Task,此时没有资源处理接受到达的数据。原创 2024-08-24 09:40:41 · 4432 阅读 · 3 评论 -
大数据-98 Spark 集群 Spark Streaming 基础概述 架构概念 执行流程 优缺点
上节研究了SparkSQL的JOIN操作,Broadcast、Shuffle、SQL解析的过程详解,SparkSQL的详细优化思路。本节研究SparkStreaming的接触概述,背景概述、基本概念、架构概念、容错性等等。随着大数据技术的不断发展,人们对于大数据的实时性处理要求也不断提高,传统的MapReduce等批处理框架在某些特定领域,例如实时用户推荐、用户行为分析这些应用场景上逐渐不能满足人们对实时性的需求,因为诞生了一批如 S3、Samza、Storm、Flink等流式分析、实时计算框架。原创 2024-08-23 09:39:29 · 6515 阅读 · 3 评论 -
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程
上节研究SparkSQL的编码、测试、结果,输入输出,数据源包含Parquet、JSON、CSV、Avro、ORC、Hive、JDBC。本节研究SparkSQL的原理,包含Boradcost、Shuffle、SQL解析和执行的原理。在Spark的物理计划阶段,Spark的Join Selection类会根据Join Hints 策略,Join表的大小、Join是等值Join还是不等值以及参与Join的Key是否可以排序等条件来选择最终的Join策略,最后Spark会利用选择好的Join策略执行最终的计算。原创 2024-08-23 09:20:50 · 4950 阅读 · 1 评论 -
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
上节研究了SparkSQL的核心操作,Action详细解释+测试案例,与Transformation详细解释+测试案例。本节研究SparkSQL的数据源操作,输入与输出数据。df.write.format(“jdbc”).option(“url”, “jdbc:mysql://host/db”).option(“dbtable”, “table”).option(“user”, “username”).option(“password”, “password”).save()原创 2024-08-22 09:40:31 · 6288 阅读 · 7 评论 -
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例
上节研究了SparkSQL中的SparkSession、SparkSQL中的RDD、DataFrame、DataSet,同时研究了三者之间是如何进行互相转换的。本节继续研究SparkSQL,研究当中的Action和Transformation操作,附带详细的解释与测试案例截图。 备注:Dataset默认的存储级别是 MEMEORY_AND_DISK。我们进入 spark-shell 进行测试。启动 Spark-Shell 继续进行测试。保存并上传到服务器上。原创 2024-08-22 09:13:12 · 3794 阅读 · 1 评论 -
大数据-94 Spark 集群 SQL DataFrame & DataSet & RDD 创建与相互转换 SparkSQL
上节研究了SparkSQL,进行了介绍、特点、数据抽象、数据类型的内容。本节研究SparkSQL的DataFrame、DataSet、RDD,三者之间相互转换的内容。将 RDD 转换为 DataFrame 需要提供数据的模式信息。DataSet 是 Spark 1.6 引入的一个新的数据抽象,它结合了 RDD 的强类型优势和 DataFrame 的优化能力。不要刻意区分: DF & DS,DF是一种特殊的DS:ds.transformation => ds。原创 2024-08-21 09:41:17 · 4766 阅读 · 0 评论 -
大数据-93 Spark 集群 Spark SQL 概述 基本概念 SparkSQL对比 架构 抽象
上节研究了Spark的Standalone、SparkContext、Shuffle的V1和V2的对比等内容。本节研究SparkSQL,SparkSQL的基本概念、对比、架构、抽象。SparkSQL 是 Apache Spark 中用于处理结构化数据的模块。它不仅支持 SQL 查询,还允许你将 SQL 查询与 Spark 的其他强大功能结合使用,如数据流处理和机器学习。SparkSQL 提供了对数据的高度优化的访问方式,可以处理大量的结构化和半结构化数据集。原创 2024-08-21 09:09:24 · 4380 阅读 · 0 评论 -
大数据-92 Spark 集群 SparkRDD 原理 Standalone详解 ShuffleV1V2详解 RDD编程优化
上节研究了Spark程序的优化方案,广播变量、累加器等内容。本节研究SparkRDD原理内容,Standalone详解、ShuffleV1和ShuffleV2版本的详解,最后还有RDD编程优化的手段。SparkContext 是 Spark 应用程序的主控制器,它负责与 Spark 集群的管理节点(Driver)和工作节点(Workers)进行交互。通过 SparkContext,用户可以提交作业、管理 RDD(弹性分布式数据集)和其他数据集,并执行各种操作。原创 2024-08-20 09:40:50 · 3728 阅读 · 0 评论 -
大数据-91 Spark 集群 RDD 编程-高阶 RDD广播变量 RDD累加器 Spark程序优化
上节研究了RDD的容错机制、分区机制、分区器、自定义分区器等内容。本节研究RDD的广播变量、RDD的累加器,用来对Spark程序进行优化的。有时候需要在多个任务之间共享变量,或者在任务(Task)和 Driver Program 之间共享变量。为了满足这个需求,Spark提供了两种类型的变量。广播变量(broadcast variable)累加器(accumulators)广播变量、累加器的主要作用是为了优化Spark程序。原创 2024-08-20 09:15:35 · 4031 阅读 · 0 评论 -
大数据-90 Spark 集群 RDD 编程-高阶 RDD容错机制、RDD的分区、自定义分区器(Scala编写)、RDD创建方式
上节研究了Spark的RDD的依赖关系、重回WordCount、RDD持久化、RDD缓存。本节研究Spark的RDD的 容错机制、RDD的分区,用Scala实现自定义的分区器。Spark允许用户通过自定义的Partitioner对象,灵活的来控制RDD的分区方式。分区 0 < 100100原创 2024-08-19 09:32:22 · 4048 阅读 · 0 评论 -
大数据-89 Spark 集群 RDD 编程-高阶 编写代码、RDD依赖关系、RDD持久化/缓存
上节研究了Spark的RDD的Super Word Count程序,实现了将计算结果写入到MySQL中。本节研究Spark的高阶编码、RDD的依赖关系,RDD的持久化、RDD的缓存机制。RDD任务切分中间分为:Driver program、Job、Stage(TaskSet) 和 Task。Driver program:初始化一个SparkContext即生成一个Spark应用。Job:一个Action算子就会生成一个Job。原创 2024-08-19 09:09:43 · 3757 阅读 · 0 评论 -
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
上节完成了Spark的案例:计算圆周率、计算共同好友的功能,并且上传服务器运行。本节继续编写Spark的案例,Scala实现 Super WordCount 可以写入MySQL。优化后使用 foreachPartition 保存数据,一个分区创建一个链接:cache RDD。我们在 foreach 中保存了数据,此时需要创建大量的MySQL连接,效率是比较低的。先实现到MySQL保存前的内容,我们需要先编写测试一下我们的代码是否正确。我们新建一个数据库,也要新建一个数据表。原创 2024-08-17 09:43:40 · 3131 阅读 · 0 评论 -
大数据-87 Spark 集群 案例学习 Spark Scala 案例 手写计算圆周率、计算共同好友
上节完成了Spark WordCount的学习,并用Scala 和 Java 分别编写了 WordCount的计算程序。本节研究Spark的案例,手写计算圆周率和寻找计算共同好友。main 方法是 Scala 应用程序的入口点,类似于 Java 中的 main 方法。这段代码用来处理传递给程序的第一个参数,如果有参数传递过来,则将其转换为整数,作为分片数 slices。这意味着只会记录警告级别及以上的日志信息,减少不必要的日志输出。原创 2024-08-17 09:39:40 · 3520 阅读 · 1 评论 -
大数据-86 Spark 集群 WordCount 用 Scala & Java 调用Spark 编译并打包上传运行 梦开始的地方
上节研究了Spark RDD操作方式Action、Key-ValueRDD的操作,详细解释与案例。本节用Scala、Java语言,编写WordCount程序,并编译打包到服务器上运行。在这个过程中,我不仅加深了对Spark生态系统的理解,还亲身体验了大数据处理的核心思想:分而治之。通过编写和运行这个程序,我意识到,尽管代码本身很简单,但其背后的概念却揭示了大数据处理的复杂性与挑战性。这使我更加意识到,在大数据的世界里,性能优化和资源管理是永恒的主题。原创 2024-08-16 10:10:49 · 5121 阅读 · 0 评论 -
大数据-85 Spark 集群 RDD创建 RDD-Action Key-Value RDD详解 RDD的文件输入输出
上节完成了SparkRDD的创建,从集合、文件、RDD创建 RDD的方式,并且详细介绍了 Transformation的操作内容。本节研究Spar的RDD的Action、Key-Value RDD。都需要先把文件当做普通文件来读取数据,然后通过将每一行进行解析实现对CSV的提取。通过 objectFile 接收一个路径,读取对象文件,返回对应的RDD,也可以通过调用saveAsObjectFile() 实现对对象文件的输出。原创 2024-08-16 09:54:52 · 4434 阅读 · 0 评论 -
大数据-84 Spark 集群 RDD创建 RDD-Transformation操作算子 详解
上节Spark的RDD介绍、RDD特点、Spark编程模型。本节研究SparkRDD的创建,RDD-Transformation操作算子,并附带测试案例,详细过程。转换得到RDD是惰性求值,也就是说,整个转换过程只有记录了转换的轨迹,并不会发生真正的计算,只有遇到Action操作时,才会发生真正的计算,开始从学院关系(lineage)源头开始,进行物理的转换操作。SparkContext是编写Spark程序用到的第一个类,是Spark的主要入口点,它负责和整个集群的交互。原创 2024-08-15 09:20:19 · 4573 阅读 · 0 评论 -
大数据-83 Spark 集群 RDD编程简介 RDD特点 Spark编程模型介绍
上节完成了Spark集群环境部署和配置,并且启动SparkShell。本节研究RDD编程,RDD编程简介,RDD创建、Spark编程模型的简介。RDD是Spark的基石,是实现Spark数据处理的核心现象。RDD是一个抽象类,它代表一个不可变、可分区、里面的元素可并行计算的集合。RDD(Resilient Distributed Dataset)是Spark中的核心概念,它是一个容错、可以并行执行的分布式数据集。原创 2024-08-15 08:55:15 · 3620 阅读 · 0 评论 -
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
上节完成了Spark的环境配置,集群配置,并且通过分发把服务分发到了别的服务器上等内容。本节我们对集群进行启动和测试,需要HDFS和Spark的环境。这里Spark提供了一个官方的HelloWorld(前提你配置好环境变量,不然你需要到指定目录执行)我们通过查看 h121 的日志,可以看到是 8081 的端口(我的8080好像是被占用了)这个在Spark的目录下的 logs下,如果你也遇到了无法访问,可以看看这个logs。原创 2024-08-14 09:31:31 · 3319 阅读 · 0 评论 -
大数据-81 Spark 安装配置环境 集群环境配置 超详细 三台云服务器
上节完成了Spark的介绍、Spark特点、Spark部署模式、系统架构。本节我们在三台云服务器上实机部署配置Spark的集群环境,包含环境变量与配置等内容。使用我们之前编写的 rsync-script 工具。当然你也可以每台都配置一次也行,只要保证环境一致即可。(之前Hadoop等都使用过,如果你没有,你可以用复制或者别的方式)页面如下,为了保证稳定和学习的方便,我用了比较老的版本:2.4.5。每天机器都需要配置环境变量!配置完的结果,记得刷新环境变量。原创 2024-08-14 09:01:11 · 5578 阅读 · 2 评论 -
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
上节我们终于到了Kafka最后一个内容,集群的可视化方案,JConsole、Kafka Eagle等内容,同时用JavaAPI获得监控指标。本节研究Spark的简要概述,系统架构、部署模式、与MapReduce进行对比。MapReduce 昨天Spark 今天Flink 未来MapReduce和Spark都是类MR的处理引擎,底层原理非常相似。原创 2024-08-13 09:15:08 · 5724 阅读 · 3 评论