Spark
文章平均质量分 91
本栏有关spark学习
<一蓑烟雨任平生>
没成功之前才华等于狗屎,只有成功了才证明你的一切!
展开
-
Spark 内存管理详解
在执行Spark 的应用程序时,Spark 集群会启动 Driver 和 Executor 两种 JVM 进程,前者为主控进程,负责创建 Spark 上下文,提交 Spark 作业(Job),并将作业转化为计算任务(Task),在各个 Executor 进程间协调任务的调度,后者负责在工作节点上执行具体的计算任务,并将结果返回给 Driver,同时为需要持久化的 RDD 提供存储功能。由于 Driver 的内存管理相对来说较为简单,本节主要对 Executor 的内存管理进行分析,下文中的 Spark 内存转载 2021-05-20 15:13:45 · 322 阅读 · 1 评论 -
Spark Shuffle原理详解
目录(1)Shuffle概述(2)Hash Shuffle机制(2.1)Hash Shuffle概述(2.2)没有优化之前的Hash Shuffle机制(2.3)优化后的Hash Shuffle机制(3)Sort Shuffle机制(4)Spark Shuffle调优(1)Shuffle概述Shuffle 就是对数据进行重组,是把一组无规则的数据尽量转换成一组具有一定规则的数 据。由于分布式计算的特性和要求,在实现细节上更加繁琐和复杂。在 MapReduce 框架,Shuffle 是连接 Map 和原创 2021-05-18 18:32:35 · 1163 阅读 · 0 评论 -
Spark2.4.7源码解读RDD依赖关系
目录(1)概述(2)窄依赖(2.1)一对一依赖(2.2)范围依赖(3)宽依赖(1)概述Spark中RDD的高效与DAG(有向无环图)有很大的关系,在DAG调度中需要对计算的过程划分Stage,划分的依据就是RDD之间的依赖关系。RDD之间的依赖关系分为两种,宽依赖(ShuffleDependency)和窄依赖(NarrowDependency)依赖在 Apache Spark 源码中的对应实现是 Dependency 抽象类。/** * :: DeveloperApi :: * Base cla原创 2021-05-12 17:03:45 · 283 阅读 · 0 评论 -
Spark作业调度中stage的划分
目录(1)Spark作业调度(2)RDD依赖关系(3)Stage的划分(1)Spark作业调度(2)RDD依赖关系(3)Stage的划分原创 2021-05-11 13:38:56 · 2808 阅读 · 0 评论 -
浅谈Spark中Job-Stage-Task之间的关系
目录(1)Spark-Job-Stage-Task之间的关系(2)RDD-Partition-Records-Task之间的关系(1)Spark-Job-Stage-Task之间的关系在开始之前需要先了解Spark中Application,Job,Stage等基本概念,官方给出的解释如下表:TermMeaningApplication用户编写的Spark应用程序,包括一个Driver和多个executorsDriver Program运行main()函数并创建SparkC原创 2021-05-10 23:16:08 · 1019 阅读 · 0 评论 -
Structured Streaming之Event-Time的Window操作
基于Event-Time的Window操作详细工作流程:方式一:package com.kfk.spark.structuredstreaming;import com.kfk.spark.common.CommSparkSession;import org.apache.spark.api.java.function.FlatMapFunction;import org.apache.spark.sql.*;import org.apache.spark.sql.streaming.原创 2020-12-23 15:42:43 · 341 阅读 · 0 评论 -
Structured Streaming中DS和DF的操作详解
创建流式的DataSet和DataFrame方式一:通过JavaBean方式Java语言实现:package com.kfk.spark.structuredstreaming;import java.sql.Date;/** * @author : 蔡政洁 * @email :caizhengjie888@icloud.com * @date : 2020/12/21 * @time : 10:38 下午 */public class DeviceData { // d原创 2020-12-23 15:24:33 · 508 阅读 · 0 评论 -
Spark Streaming之window滑动窗口详解
window滑动窗口Spark Streaming提供了滑动窗口操作的支持,从而让我们可以对一个滑动窗口内的数据执行 计算操作。每次掉落在窗口内的RDD的数据,会被聚合起来执行计算操作,然后生成的RDD,会作 为window DStream的一个RDD。比如下图中,就是对每三秒钟的数据执行一次滑动窗口计算,这3 秒内的3个RDD会被聚合起来进行处理,然后过了两秒钟,又会对最近三秒内的数据执行滑动窗口 计算。所以每个滑动窗口操作,都必须指定两个参数,窗口长度以及滑动间隔,而且这两个参数 值都必须是batch原创 2020-12-23 14:39:54 · 1944 阅读 · 1 评论 -
Structured Streaming详解
目录一、Structured Streaming概述(1)Structured Streaming背景(2)Structured Streaming概念二、Structured Streaming编程模型(1)编程模型(2)EventTime(3)容错语义三、基于WordCount程序讲解Structured Streaming编程模型一、Structured Streaming概述(1)Structured Streaming背景大多数的流式计算引擎(比如storm、spark streaming等原创 2020-12-22 14:46:58 · 7912 阅读 · 3 评论 -
基于Spark Streaming对新闻网站项目案例分析
目录一、需求分析二、数据准备(1)数据格式(2)基于Java开发实时数据生成器三、实施过程一、需求分析新闻网站需求:pvuv注册用户数热门板块数据处理流程:数据源 -> kafka -> spark streaming二、数据准备(1)数据格式网站日志格式 :date,timestamp,userid,pageid,section,action日志字段说明:date: 日期,yyyy-MM-dd格式 timestamp: 时间戳 userid: 用户原创 2020-12-21 12:16:19 · 699 阅读 · 0 评论 -
Spark Streaming之容错机制
目录一、容错机制的背景二、Spark Streaming 容错语义的定义三、接收数据的容错语义四、输出数据的容错语义五、storm的容错语义一、容错机制的背景要理解Spark Streaming提供的容错机制,先回忆一下Spark RDD的基础容错语义:RDD,Ressilient Distributed Dataset,是不可变的、确定的、可重新计算的、分布式的数据集。每个 RDD都会记住确定好的计算操作的血缘关系,这些操作应用在 一个容错的数据集上来创建RDD。val lines = sc.原创 2020-12-20 11:34:17 · 886 阅读 · 1 评论 -
Spark Streaming之checkpoint机制
目录一、checkpoint机制二、checkpoint启用方式三、Driver失败重写超过程序四、配置spark-submit提交参数五、checkPoint的说明一、checkpoint机制每一个Spark Streaming应用,正常来说,都是要7 * 24小时运转的,这就是实时计算程序的特点。因为要持续 不断的对数据进行计算。因此,对实时计算应用的要求,应该是必须要能够对与应用程序逻辑无关的失败,进行 容错。如果要实现这个目标,Spark Streaming程序就必须将足够的信息checkpo原创 2020-12-20 11:14:41 · 1444 阅读 · 3 评论 -
Spark Streaming与Spark SQL结合操作详解
Spark Streaming最强大的地方在于,可以与Spark Core、Spark SQL整合使用,之前已经通 过transform、foreachRDD等算子看到,如何将DStream中的RDD使用Spark Core执行批处理操 作。现在就来看看,如何将DStream中的RDD与Spark SQL结合起来使用。案例:每隔10秒,统计最近60秒的,每个种类的每个商品的点击次数,然后统计出每个种类 top3热门的商品。数据输入模型:--------------------------姓名 商品原创 2020-12-19 17:43:38 · 2153 阅读 · 6 评论 -
Spark Streaming之foreachRDD操作详解
DStream中的所有计算,都是由output操作触发的,比如print()。如果没有任何output操作, 那么,压根儿就不会执行定义的计算逻辑。此外,即使你使用了foreachRDD output操作,也必须在里面对RDD执行action操作,才能触 发对每一个batch的计算逻辑。否则,光有foreachRDD output操作,在里面没有对RDD执行 action操作,也不会触发任何逻辑。OutputMeaningprint打印每个batch中的前10个元素,主要用于测试,原创 2020-12-19 17:27:10 · 1944 阅读 · 1 评论 -
Spark Streaming之Transform算子详解
Transform算子解读:transform操作,应用在DStream上时,可以用于执行任意的RDD到RDD的转换操作。它可以用于实现, DStream API中所没有提供的操作。比如说,DStream API中,并没有提供将一个DStream中的每个 batch,与一个特定的RDD进行join的操作。但是我们自己就可以使用transform操作来实现该功能。DStream.join(),只能join其他DStream。在DStream每个batch的RDD计算出来之后,会去跟其他 DStream的R原创 2020-12-17 12:28:46 · 1833 阅读 · 0 评论 -
Spark Streaming之UpdateStateByKey算子详解
流处理中,有个状态(state)的概念:无状态的:当前批次处理完之后,数据只与当前批次有关有状态的:前后批次的数据处理完之后,之间是有关系的updateStateByKey解读updateStateByKey:返回的是一个新的并且带有状态的DStream,会根据每一个key进行更新,更新的规则是根据自己定义的function来确定的。updateStateByKey操作允许您在使用新信息不断更新时保持任意状态。要使用它,您必须执行两个步骤:定义状态:状态可以是任意数据类型。定义状态更新功原创 2020-12-17 11:34:53 · 1059 阅读 · 0 评论 -
基于Spark SQL对新闻网站项目案例分析
目录一、需求分析二、数据准备(1)数据格式(2)基于Java开发离线数据生成器(3)基于业务数据创建hive表三、数据模型(1)需求一:对网站的pv分析(2)需求二:对网站的uv分析(3)需求三:新用户注册比率(4)需求四:用户跳出率(5)需求五:版块热度排行榜四、实施过程五、总结一、需求分析新闻网站需求:PV: PV是Page View,是指一个页面被所有用户访问次数的总和,页面被访问一次就被记 录1次PV。UV: UV是User View,是指一个页面被多少个用户访问了,一个用户访问一次是1次原创 2020-12-13 16:22:24 · 1290 阅读 · 0 评论 -
Spark SQL与JDBC的集成
数据源:userid,addres,age,username001,guangzhou,20,alex002,shenzhen,34,jack003,beijing,23,lili创建mysql数据表create table person(userid varchar(20),addres varchar(20),age varchar(20),username varchar(20));insert into person(userid,addres,age,username原创 2020-12-11 14:50:01 · 302 阅读 · 0 评论 -
Spark与HBase的集成
目录一、Spark与HBase的集成二、Spark SQL与HBase的集成版本说明:hbase版本:hbase-1.3.1spark版本:spark-2.4.7-bin-hadoop2.7一、Spark与HBase的集成背景:Spark支持多种数据源,但是Spark对HBase的读写都没有相对优雅的api,但spark和HBase整合的场景又比较多,故通过spark的数据源API自己实现了一套比较方便操作HBase的API。数据模型:row,addres,age,username0原创 2020-12-10 23:27:11 · 4442 阅读 · 0 评论 -
Spark SQL中基于parquet数据的加载方式、数据源的自动分区推断以及数据源的元数据合并
数据源:{"name":"Michael"}{"name":"Andy", "age":30}{"name":"Justin", "age":19}{"name":"Justin", "age":19}{"name":"Justin", "age":32}示例代码:package com.kfk.spark.sqlimport com.kfk.spark.common.{Comm, CommSparkSessionScala}import org.apache.spark.sql.{S原创 2020-12-08 21:18:04 · 233 阅读 · 0 评论 -
Spark SQL中开窗函数详解
row_number()开窗函数: 其实就是给每个分组的数据,按照其排序的顺序,打上一个分组内的行号,相当于groupTopN,在实际应用中非常广泛。+--------+-------+------+|deptName| name|salary|+--------+-------+------+| dept-1|Michael| 3000|| dept-2| Andy| 5000|| dept-1| Alex| 4500|| dept-2| Justin| 6700原创 2020-12-08 20:39:10 · 812 阅读 · 0 评论 -
Spark SQL中自定义函数详解
目录一、自定义函数UDF二、自定义聚合函数UDAF一、自定义函数UDF数据源:{"deptName":"dept-1", "name":"Michael", "salary":3000}{"deptName":"dept-2", "name":"Andy", "salary":5000}{"deptName":"dept-1", "name":"Alex", "salary":4500}{"deptName":"dept-2", "name":"Justin", "salary":6700}{原创 2020-12-08 20:30:07 · 524 阅读 · 0 评论 -
Spark SQL中DataSet函数操作
目录一、DataSet中常见函数详解二、DataSet中untype详解三、DataSet中聚合函数详解四、DataSet中其他函数详解一、DataSet中常见函数详解(1)重分区函数:coalesce / repartitioncoalesce:只能用于减少分区的数据,而且可以选择不发生shuffle。repartition:可以增加分区的数据,也可以减少分区的数据,必须会发生shuffle,相当于进行了一次重新分区操作。(2)去重函数:distinct / dropDuplicates原创 2020-12-07 15:23:13 · 1931 阅读 · 0 评论 -
Spark中RDD、DataFrame和DataSet的区别与联系
目录一、RDD、DataFrame和DataSet的定义二、RDD、DataFrame和DataSet的比较(1)Spark版本(2)数据表示形式(3)数据格式(4)编译时类型安全(5)序列化(6)垃圾回收(7)效率/内存使用(8)编程语言支持(9)聚合操作(Aggregation)(10)结论一、RDD、DataFrame和DataSet的定义在开始Spark RDD与DataFrame与Dataset之间的比较之前,先让我们看一下Spark中的RDD,DataFrame和Datasets的定义:原创 2020-12-05 21:56:44 · 3109 阅读 · 0 评论 -
Spark中RDD、DataFrame、DataSet的生成与互相转换(非常重要)
目录一、RDD的生成二、DataFrame的生成三、DataSet的生成四、RDD和DataFrame的转换(1)RDD转DataFrame方案一:直接将字段名称传入toDF中方案二:通过反射的方式方案三:构造Schema的方式(2)DataFrame转RDD五、RDD和DataSet的转换(1)RDD转DataSet方案一:使用toDS()算子方案二:使用spark.createDataset(rdd)(2)DataSet转RDD六、DataFrame与DataSet的转换(1)DataFrame转Dat原创 2020-12-05 21:12:00 · 2229 阅读 · 0 评论 -
基于Spark对某移动APP流量访问日志分析(Java版)
目录需求分析数据原型设计思路数据模型及演化过程实施过程需求分析我们来根据移动设备唯一标识deviceID来计算来自客户端用户访问日志请求和响应的上行流量、下行流量的记录。上行流量:指的是手机app向服务器发送的请求数据的流量下行流量:指的是服务器端给手机app返回的数据(比如说图片、文字、json)的流量1.计算每个设备(deviceID)总上行流量之和与下行流量之和(取时间戳取最小的deviceID)eg: 时间戳 设备号 上行流量 下行流量1 001 79976 114原创 2020-12-01 15:57:20 · 643 阅读 · 0 评论 -
Spark核心编程与项目案例详解(三)
目录十一、十一、原创 2020-11-30 15:15:09 · 781 阅读 · 0 评论 -
Spark核心编程与项目案例详解(二)
目录六、共享变量详解(1)Broadcast Variable工作原理详解(2)Accumulator工作原理详解(3)通过代码验证共享变量七、Spark之WordCount高级编程(1)使用Java语言实现(2)使用Scala语言实现八、二次排序案例实战(1)使用Java语言实现(2)使用Scala语言实现九、TopN案例实战(1)使用Java语言实现(2)使用Scala语言实现十、GroupTopN案例实战(1)使用Java语言实现(2)使用Scala语言实现六、共享变量详解Spark一个非常重要的原创 2020-11-29 14:37:57 · 719 阅读 · 0 评论 -
Spark核心编程与项目案例详解(一)
目录一、Spark结构原理二、创建RDD的几种方式(1)Parallelize集合(2)本地或者HDFS文件三、Transformation算子四、Action算子五、RDD持久化详解(1)持久化原理(2)cache和persist的区别(3)持久化策略(4)如何选择RDD持久化策略(5)测试RDD持久化一、Spark结构原理1.Driver进程启动之后,会做一些初始化的操作。在这个操作中,就会发送请求到Master进行spark应用程序的注册;目的是告诉master主节点,有一个新的spark应用程原创 2020-11-27 19:41:01 · 796 阅读 · 0 评论 -
Spark工作原理及基础概念(超详细!)
目录一、Spark概述(1)概述(2)Spark整体架构(3)Spark特性(4)Spark与MR(5)Spark Streaming与Storm(6)Spark SQL与Hive二、Spark基本原理(1)Spark Core(2)Spark SQL(3)Spark Streaming(4)Spark基本工作原理(1)分布式数据集(2)弹性(3)迭代式处理(4)容错性三、Spark 运行模式及集群角色(1)Spark运行模式(2)Spark集群角色(1)Cluster Manager(2)worker(3原创 2020-11-24 15:05:28 · 41555 阅读 · 1 评论 -
Structured Streaming架构原理详解!
目录一、Structured Streaming概述二、Structured Streaming与Socket集成三、Structured Streaming与Kafka集成一、Structured Streaming概述Structured Streaming是一个基于sparksql引擎开发的可伸展和容错的流处理引擎。Structured Streaming传输中的关键思想是将实时数据流视为被连续添加的表。这导致了一个新的流处理模型,该模型与批处理模型非常相似。您将像在静态表上一样将流计算表示为类原创 2020-10-01 10:59:54 · 1036 阅读 · 0 评论 -
Spark Streaming架构原理详解!
目录一、Spark Streaming功能介绍(1)概述(2)DStream概述(3)Storm和Spark Streaming比较二、一个简单的例子三、Spark Streaming服务架构及工作原理四、编程模型一、Spark Streaming功能介绍(1)概述Spark Streaming是一个基于Spark Core之上的实时计算框架,可以从很多数据源消费数据并对数据进行处理.Spark Streaming 是Spark核心API的一个扩展,可以实现高吞吐量的、具备容错机制的实时流数据的处理。原创 2020-09-30 11:57:57 · 3013 阅读 · 1 评论 -
Spark SQL 与Hive集成
目录一、Spark SQL 与Hive集成(spark-shell)(1)添加配置项目(2)启动服务(3)数据测试(4)将数据集写入到MySQL二、Spark SQL 与Hive集成(spark-sql)一、Spark SQL 与Hive集成(spark-shell)(1)添加配置项目第一步:拷贝hive的配置文件hive-site.xml到spark的conf的目录下cp hive-site.xml /opt/Hadoop/spark/conf第二步:添加hive-site.xml中met原创 2020-09-23 18:51:50 · 1205 阅读 · 0 评论 -
Spark SQL概述及特点详解
目录一、Spark SQL概念二、Spark SQL功能三、Spark SQL 与 Hive 的区别一、Spark SQL概念它主要用于结构化数据处理和对Spark数据执行类SQL的查询。通过Spark SQL,可以针对不同格式的数据执行ETL操作(如JSON,Parquet,数据库)然后完成特定的查询操作。一般来说,Spark每支持一种新的应用开发,都会引入一个新的Context及相应的RDD,对于SQL这一特性来说,引入的就是SQLContext和SchemaRDD。注意:在Spark1.3之后,S原创 2020-09-23 12:16:15 · 4724 阅读 · 0 评论 -
Spark2.X弹性分布式数据集
目录一、三大弹性分布式数据集介绍二、Spark RDD概述与创建方式(1)连接Spark(2)初始化Spark三、Spark RDD五大特性四、Spark RDD操作方式及使用五、 DataFrame创建方式及功能使用六、DataSet创建方式及功能使用(1)创建DataSet方式一(2)创建DataSet方式二(3)创建DataSet方式三七、数据集之间的对比与转换(总结)一、三大弹性分布式数据集介绍RDD、DataFrame、DataSet是Spark平台下的弹性分布式数据集,为高效处理超大型数据集原创 2020-09-22 10:27:53 · 395 阅读 · 0 评论 -
Spark RDD详解!
目录一、RDD基础二、创建RDD三、RDD操作(1)转化操作(2)行动操作(3)惰性求值四、常见的转化操作和行动操作(1)针对各元素的转化操作(2)伪集合操作(3)行动操作五、持久化(缓存)Spark 对数据的核心抽象——弹性分布式数据集(Resilient Distributed Dataset, 简 称 RDD) 。 RDD 其实就是分布式的元素集合。在 Spark 中, 对数据的所有操作不外乎创 建 RDD、转化已有 RDD 以及调用 RDD 操作进行求值。而在这一切背后, Spark 会自动将 R原创 2020-09-19 18:31:06 · 1421 阅读 · 0 评论 -
Spark几种运行模式的配置与测试!!!
目录一:Spark几种运行模式介绍二:Spark Standalone集群模式配置与运行三: Spark on YARN 集群模式配置与运行一:Spark几种运行模式介绍spark的几种运行模式LocalStandalone(spark自己的资源管理)YARNMesos二:Spark Standalone集群模式配置与运行三: Spark on YARN 集群模式配置与运行...原创 2020-09-17 18:30:35 · 878 阅读 · 0 评论 -
Spark中IDEA Maven工程创建与配置
目录一、IDEA Maven工程创建与配置二、开发Spark Application程序并进行本地测试三、一、IDEA Maven工程创建与配置二、开发Spark Application程序并进行本地测试三、原创 2020-09-14 15:06:53 · 2165 阅读 · 0 评论 -
Centos7下Spark下载与安装
目录Centos7下Spark安装第一步:软件下载或编译第二步:安装软件(1)上传文件(2)解压文件第三步:Spark的本地模式运行测试第四步:Spark服务WEB监控页面Centos7下Spark安装电脑系统:macOS 10.15.4虚拟机软件:Parallels Desktop14操作系统:CentOS 7JDK版本:jdk1.8.0_162Hadoop版本:hadoop-2.6.0-cdh5.9.3Scala版本:scala-2.12.8Spark版本:spark-2.4.6-bi原创 2020-08-12 15:43:44 · 2190 阅读 · 0 评论 -
浅谈Spark
目录一、Spark是什么二、Spark各组件介绍(1)Spark Core(2)Spark SQL(3)Spark Streaming(4)MLlib(5)GraphX(6)集群管理器三、Spark的适用场景一、Spark是什么基本概念:Spark 是一个用来实现 快速 而 通用 的集群计算的平台。详细了解可去Spark的官网:http://spark.apache.org/在速度方面, Spark 扩展了广泛使用的 MapReduce 计算模型,而且高效地支持更多计算模 式,包括交互式查询和流处理原创 2020-08-09 15:01:21 · 569 阅读 · 0 评论