![](https://img-blog.csdnimg.cn/20190927151101105.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Spark
文章平均质量分 86
Spark 学习和实战 以及日常工作分享
不二人生
刀光剑影江湖情,摧枯拉朽浪滔滔。功名利禄拂衣去,山高水远路迢迢。一个上得了厅堂下得了厨房、左手写诗右手写词的男人
展开
-
StructStreaming Batch mode和Continuous mode
今天这一讲,我们学习了 Structured Streaming 中两种不同的计算模型——Batch mode 与 Continuous mode。只有了解了它们各自在吞吐量、延迟性和容错等方面的特点,在面对日常工作中不同的流计算场景时,我们才能更好地做出选择。在 Batch mode 下,Structured Streaming 会将数据流切割为一个个的 Micro-batch。原创 2024-03-30 09:26:07 · 62332 阅读 · 0 评论 -
Spark 配置项
首先,对于 CPU 类配置项,我们要重点理解并行度与并行计算任务数的区别。并行度从数据的角度出发,明确了数据划分的粒度,并行度越高,数据粒度越细,数据越分散,CPU 资源利用越充分,但同时要提防数据粒度过细导致的调度系统开销。并行计算任务数则不同,它从计算的角度出发,强调了分布式集群在任一时刻并行处理的能力和容量。并行度与并行计算任务数之间互相影响、相互制约。其次,对于内存类配置项,我们要知道怎么设置它们来平衡不同内存区域的方法。在平衡堆外与堆内内存的时候,我们要重点考察数据模式。原创 2024-03-30 09:03:24 · 61757 阅读 · 1 评论 -
Spark GraphX 算法实例
利用GraphX自带的社会网络数据集实例,用户集合数据集存在/usr/local/Spark/data/graphx/users.txt,用户关系数据集存在/usr/local/Spark/data/graphx/followers.txt。静态的PageRank算法运行在固定的迭代次数,动态的PageRank算法运行直到整个排名收敛(eg:通过限定可容忍的值来停止迭代)。PageRank同样可以在图中测量每个顶点的重要性,假设存在一条从顶点u到顶点v的边,就代表顶点u对顶点v的支持。原创 2024-03-28 07:36:28 · 49930 阅读 · 1 评论 -
Spark GraphX 图操作
这里只列出Graph中常用的操作函数API,仍有一些高级函数没有列出,如果需要还请参考Spark API文档。原创 2024-03-28 07:35:29 · 50911 阅读 · 1 评论 -
Spark SQL— Catalyst 优化器
优化一词是指修改系统以使其工作更高效或使用更少资源的过程。Spark SQL是 Apache Spark 中技术含量最高的组件。Spark SQL 处理 SQL 查询和 DataFrame API。Spark SQL 的深处有一个催化剂优化器。Catalyst 优化允许一些高级编程语言功能,使您可以构建可扩展的查询优化器。一种名为 Catalyst 的新型可扩展优化器出现了,用于实现 Spark SQL。该优化器基于**Scala中的函数式编程构造。Catalyst Optimizer 支持。原创 2024-03-27 07:39:52 · 46752 阅读 · 1 评论 -
Spark Streaming
Spark Streaming 是个批处理的流式(实时)计算框架。其基本原理是把输入数据以某一时间间隔批量的处理,当批处理间隔缩短到秒级时,便可以用于处理实时数据流。支持从多种数据源获取数据,包括Kafk、Flume、Twitter、ZeroMQ、Kinesis以及TCP sockets,从数据源获取数据之后,可以使用诸如map、reduce、join等高级函数进行复杂算法的处理。最后还可以将处理结果存储到文件系统,数据库等数据持久化系统。原创 2024-03-27 07:37:54 · 44149 阅读 · 1 评论 -
Spark RDD、DataFrame和DataSet的区别
在比较这三者的区别之前,先看看他们各自的定义是什么。RDD是一种弹性分布式数据集,是一种只读分区数据。它是spark的基础数据结构,具有内存计算能力、数据容错性以及数据不可修改特性。Dataframe也是一种不可修改的分布式数据集合,它可以按列查询数据,类似于关系数据库里面的表结构。可以对数据指定数据模式(schema)。Dataset是DataFrame的扩展,它提供了类型安全,面向对象的编程接口。也就是说DataFrame是Dataset的一种特殊形式。原创 2024-03-26 07:33:12 · 42038 阅读 · 0 评论 -
Spark SQL 数据源
Spark SQL支持读取很多种数据源,比如parquet文件,json文件,文本文件,数据库等。先把people.json导入到hdfs的tmp目录下。原创 2024-03-26 07:31:03 · 40446 阅读 · 0 评论 -
Spark SQL DataFrame
DataFrame是一个分布式数据集合,它被组织成命名列。从概念上讲,它相当于具有良好优化技术的关系表。DataFrame可以从不同来源的数组构造,例如Hive表,结构化数据文件,外部数据库或现有RDD。这个API是为现代大数据和数据科学应用程序设计的,Spark SQL的DataFrame设计灵感来自Python的Pandas和R语言的DataFrame数据结构。原创 2024-03-26 07:30:27 · 39222 阅读 · 0 评论 -
Spark SQL
Spark为结构化数据处理引入了一个称为Spark SQL的编程模块。它提供了一个称为DataFrame的编程抽象,并且可以充当分布式SQL查询引擎。原创 2024-03-25 08:58:35 · 41186 阅读 · 0 评论 -
Spark 检查点(checkpoint)
Checkpointing可以将RDD从其依赖关系中抽出来,保存到可靠的存储系统(例如HDFS,S3等), 即它可以将数据和元数据保存到检查指向目录中。因此,在程序发生崩溃的时候,Spark可以恢复此数据,并从停止的任何地方开始。开发人员可以是来方法来设置检查点。在使用检查点之前,必须使用方法设置检查点目录。所以其实我们的checkpoint主要用于Spark Streaming任务。原创 2024-03-25 08:55:59 · 37794 阅读 · 0 评论 -
Spark Streaming DStream
即,中文叫做,Spark Streaming提供的一种高级抽象,代表了一个持续不断的数据流。DStream可以通过输入数据源来创建,比如Kafka、Flume,也可以通过对其他DStream应用高阶函数来创建,比如map、reduce、join、window。DStream的内部,其实是一系列持续不断产生的RDD,RDD是Spark Core的核心抽象,即不可变的,分布式的数据集。DStream中的每个RDD都包含了一个时间段内的数据。原创 2024-03-24 20:43:40 · 37279 阅读 · 0 评论 -
Spark Streaming
Spark Streaming 是个批处理的流式(实时)计算框架。其基本原理是把输入数据以某一时间间隔批量的处理,当批处理间隔缩短到秒级时,便可以用于处理实时数据流。支持从多种数据源获取数据,包括Kafk、Flume、Twitter、ZeroMQ、Kinesis以及TCP sockets,从数据源获取数据之后,可以使用诸如map、reduce、join等高级函数进行复杂算法的处理。最后还可以将处理结果存储到文件系统,数据库等数据持久化系统。原创 2024-03-24 19:43:20 · 36027 阅读 · 0 评论 -
Spark spark-submit 提交应用程序
1、在集群不是特别大,并且没有mapReduce和Spark同时运行的需求的情况下,用Standalone模式效率最高。2、Spark可以在应用间(通过集群管理器)和应用中(如果一个SparkContext中有多项计算任务)进行资源调度。原创 2024-03-24 16:27:25 · 36175 阅读 · 0 评论 -
Spark 集群管理器
上面三种分布式部署方式各有利弊,通常需要根据实际情况决定采用哪种方案。进行方案选择时,往往要考虑公司的技术路线(采用Hadoop生态系统还是其他生态系统)、相关技术人才储备等。上面涉及到Spark的许多部署模式,究竟哪种模式好这个很难说,需要根据你的需求,如果你只是测试Spark Application,你可以选择local模式。而如果你数据量不是很多,Standalone 是个不错的选择。原创 2024-03-24 13:52:53 · 35331 阅读 · 0 评论 -
Spark Map 和 FlatMap 的比较
本节将介绍Spark中map(func)和两个函数的区别和基本使用。原创 2024-03-24 13:51:36 · 34209 阅读 · 0 评论 -
Spark RDD 基本操作
下面以例子的方式详细介绍Spark RDD的这两种操作涉及的函数。原创 2024-03-24 12:11:10 · 33223 阅读 · 0 评论 -
Spark 键值对 RDD
Spark为包含键值对类型的RDD提供了一些专有的操作。这些RDD被称为PairRDD。PairRDD提供了并行操作各个键或跨节点重新进行数据分组的操作接口。例如,PairRDD提供了方法,可以分别规约每个键对应的数据,还有join()方法,可以把两个RDD中键相同的元素组合在一起,合并为一个RDD。原创 2024-03-24 10:08:07 · 32155 阅读 · 0 评论 -
Spark—GraphX实战 OneID
ID Mapping 是OneID 的提前,OneID 是ID Mapping 的结果,所以要想做OneID必须先做ID MappingOneID 是为了打通整个数据体系的数据,所以OneID 需要以服务的方式对外提供服务,在数仓里面就是作为基础表使用,对外的话我们就需要提供接口对外提供服务。原创 2024-03-24 07:48:56 · 32212 阅读 · 2 评论 -
Spark—GraphX实战 ID Mapping
这里我们是使用Spark 的GraphX 进行计算的,当然我们也可以使用其他图数据库来实现ID Mapping 的核心是连通图所以我们需要有一定的图论知识基础ID Mapping 是很多业务场景的基础,例如One ID 、用户画像。原创 2024-03-24 07:48:05 · 31620 阅读 · 1 评论 -
Spark—GraphX编程指南
GraphX编程指南GraphX 是新的图形和图像并行计算的Spark API。从整理上看,GraphX 通过引入 弹性分布式属性图(Resilient Distributed Property Graph)继承了Spark RDD:一个将有效信息放在顶点和边的有向多重图。为了支持图形计算,GraphX 公开了一组基本的运算(例如,subgraph,joinVertices和mapReduceTriplets),以及在一个优化后的 PregelAPI的变形。此外,GraphX 包括越来越多的图算法和 bu原创 2021-09-02 15:12:02 · 51059 阅读 · 0 评论 -
Spark 基本架构及运行原理
Spark运行架构包括集群资源管理器(Cluster Manager)、运行作业任务的工作节点(Worker Node)、每个应用的任务控制节点(Driver)和每个工作节点上负责具体任务的执行进程(Executor)。其中,集群资源管理器可以是Spark自带的资源管理器,也可以是YARN或Mesos等资源管理框架。与Hadoop MapReduce计算框架相比,Spark所采用的Executor有两个优点:一是利用多线程来执行具体的任务(Hadoop MapReduce采用的是进程模型),减少任务的启动原创 2022-12-08 13:15:23 · 32121 阅读 · 1 评论 -
Spark Shell 的使用
现在我们已经执行了行动操作,执行这些操作需要从磁盘读取数据,Spark在处理这些操作的时候,会把数据缓存起来,后续不管对该RDD执行转换操作还是行动操作,都将直接从内存读取,而不需要和磁盘进行交互。如果数据已经存在外部文件系统,例如本地文件系统,HDFS,HBase,Cassandra,S3 等,可以使用这种方式,即调用 SparkContext 的 textFile 方法,并把文件目录或者路径作为参数。操作,RDD并不会立即缓存,直到执行行动(Action)操作,数据才会真正缓存在内存中。原创 2022-12-16 16:07:59 · 31833 阅读 · 0 评论 -
Spark RDD 缓存机制
Spark RDD 缓存是在内存存储RDD计算结果的一种优化技术。把中间结果缓存起来以便在需要的时候重复使用,这样才能有效减轻计算压力,提升运算性能。当对RDD执行持久化操作时,每个节点都会将自己操作的RDD的partition持久化到内存中,并且在之后对该RDD的反复使用中,直接使用内存缓存的partition。这样的话,对于针对一个RDD反复执行多个操作的场景,就只要对RDD计算一次即可,后面直接使用该RDD,而不需要反复计算多次该RDD。原创 2024-03-24 00:16:26 · 30927 阅读 · 0 评论 -
Spark RDD 的创建方式
这种方法的好处就是可以在Spark shell快速创建RDD,并在RDD上面执行各种操作。但是除了测试代码效果之外,在实际的开发工作中很少用这种方法,因为它要求所有的操作数据都在一台机器上。Spark的Transformation操作将从一个给定的RDD生成新RDD。Spark是支持使用任何Hadoop支持的存储系统上的文件创建RDD的,比如说HDFS、Cassandra、HBase以及本地文件。下面是用并行化创建RDD的例子,还对创建出来的RDD进行sortByKey操作,即排序操作。原创 2024-03-24 00:15:16 · 30613 阅读 · 0 评论 -
Spark RDD
RDD是“Resilient Distributed Dataset”的缩写,从全称就可以了解到RDD的一些典型特性。Resilient(弹性):RDD之间会形成有向无环图(DAG),如果RDD丢失了或者失效了,可以从父RDD重新计算得到。即容错性。Distributed(分布式):RDD的数据是以逻辑分区的形式分布在集群的不同节点的。Dataset(数据集):即RDD存储的数据记录,可以从外部数据生成RDD,例如Json文件,CSV文件,文本文件,数据库等。原创 2024-03-24 00:14:07 · 30814 阅读 · 0 评论 -
Spark Executor
Executor是spark任务(task)的执行单元,运行在worker上,但是不等同于worker,实际上它是一组计算资源(cpu核心、memory)的集合。一个worker上的memory、cpu由多个executor共同分摊。负责执行分配给它的Task。executor会存在于整个application生命周期。task执行完之后executor就会把结果发送给驱动程序。如果application代码里调用RDD的缓存函数,如cache()或者persist()原创 2024-03-24 00:13:19 · 26378 阅读 · 0 评论 -
Spark Stage
Spark中的一个Stage只不过是物理执行计划其中的一个步骤,它是物理执行计划的一个执行单元。一个Job会被拆分为多组Task,每组任务被称为一个Stage,可以简单理解为MapReduce里面的Map Stage, Reduce Stage。Spark的Job中Stage之间会有依赖关系。可以利用这些依赖关系把Job所有stage串连起来形成一个有向无环图。在单个job内是根据shuffle算子来拆分stage的,shuffle之前是一个stage,shuffle之后是另一个stage,如果一个job中原创 2024-03-23 23:50:38 · 26404 阅读 · 0 评论 -
SparkContext
SparkContext是应用启动时创建的Spark上下文对象,是进行Spark应用开发的主要接口,是Spark上层应用与底层实现的中转站。我们俗称上下文,上接机群环境,下接Spark 内核,就是给我们提供的一个入口。原创 2024-03-23 23:48:36 · 25432 阅读 · 0 评论 -
使用Intellij idea编写Spark应用程序(Scala+SBT)
对Scala代码进行打包编译时,可以采用Maven,也可以采用SBT,相对而言,业界更多使用SBT。原创 2024-03-23 23:46:17 · 24402 阅读 · 0 评论 -
使用Intellij idea编写Spark应用程序(Scala+Maven)
对Scala代码进行打包编译时,可以采用Maven,也可以采用sbt,相对而言,业界更多使用sbt。这里介绍IntelliJ IDEA和Maven的组合使用方法。IntelliJ IDEA和SBT的组合使用方法,请参考“使用Intellij Idea编写Spark应用程序(Scala+SBT)”。原创 2024-03-23 23:44:21 · 26176 阅读 · 0 评论 -
Spark 安装(集群模式)
实际生产环境一般不会用本地模式搭建Spark。生产环境一般都是集群模式。下面就给出了安装集群模式的步骤。原创 2024-03-23 23:43:09 · 25391 阅读 · 0 评论 -
Spark 初识
从今天开始我们进入数据仓库的查询引擎篇了,前面我们已经写了大量的文章介绍Hive,具体你可以看hive 的专栏,而且关于工具这一块我们的重点就在hive 上,后面关于spark、presto、impala、clickHouse的介绍都不会像前面这样细了,因为我们的重点是在数仓建设的方法论上面,而不是工具上面。Spark 是一种高效且多用途的集群计算平台。换句话说,Spark 是一种开源的,大规模数据处理引擎。它提供了一整套开发 API,包括流计算、机器学习或者SQL。Spark 支持批处理和流处理。批处理指原创 2022-12-08 12:50:57 · 28016 阅读 · 4 评论