Spark
文章平均质量分 88
Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点
Lansonli
CSDN大数据领域博客专家,InfoQ写作社区2022年度影响力作者、华为云社区2022年度十佳博主、华为云享专家、阿里云专家博主、腾讯云开发者社区2022年度最佳作者、腾云先锋(TDP)核心成员、51CTO专家博主,全网二十万多粉丝,知名互联网公司大数据高级开发工程师
展开
-
大数据知识总结(七):Spark重要知识汇总
Spark Core(实现了 Spark 的基本功能,包含RDD、任务调度、内存管理、错误恢复、与存储系统交互等模块。数据结构:RDD)Spark SQL(可以使用 SQL操作数据。数据结构:Dataset/DataFrame = RDD + Schema)(用来操作数据流的 API。数据结构:DStream = Seq[RDD])(提供常见的机器学习(ML)功能的程序库。包括分类、回归、聚类、协同过滤等,还提供了模型评估、数据导入等额外的支持功能。数据结构:RDD或者DataFrame)原创 2024-07-31 13:16:03 · 2410 阅读 · 0 评论 -
Spark实时(六):Output Sinks案例演示
当我们对流式数据处理完成之后,可以将数据写出到Flie、Kafka、console控制台、memory内存,或者直接使用foreach做个性化处理。关于将数据结果写出到Kafka在StructuredStreaming与Kafka整合部分再详细描述。下面对File、memoery、foreach output Sink进行演示。Flie Sink就是数据结果实时写入到执行目录下的文件中,每次写出都会形成一个新的文件,文件格式可以是parquet、orc、json、csv格式。。原创 2024-07-27 16:21:40 · 1178 阅读 · 0 评论 -
Spark实时(五):InputSource数据源案例演示
实时监控json格式数据时,创建的Schema 中的字段需要与Json中的属性保持一致,否则在映射成表时,Schema中含有但在Json中没有的属性的字段对应的数据会为null。以上代码编写完成之后,向监控的目录“./data”中不断写入含有以下内容的文件,可以看到控制台有对应的流数据输出,这里一定是原子性的将文件复制到对应目录下。以上代码启动之后,向监控的目录“./data”下原子写入含有以下内容的json文件,在控制台可以看到实时监控内容。原创 2024-07-25 23:49:05 · 1826 阅读 · 4 评论 -
Spark实时(四):Strctured Streaming简单应用
Continuous不再是周期性启动task的批量执行数,而是启动长期运行的task,而是不断一个一个数据进行处理,周期性的通过指定checkpoint来记录状态(如果不指定checkpoint目录,会将状态记录在Temp目录下),保证exactly-once语义,这样就可以实现低延迟。注意:以上代码执行时Spark中写出的表由Spark 参数”spark.sql.warehouse.dir”指定的路径临时维护数据,每次执行时,需要将该路径下的表数据清空。Unspecified(默认)原创 2024-07-24 11:31:46 · 1160 阅读 · 0 评论 -
Spark实时(三):Structured Streaming入门案例
我们使用Structured Streaming来监控socket数据统计WordCount。原创 2024-07-24 00:10:31 · 969 阅读 · 0 评论 -
Spark实时(二):StructuredStreaming编程模型
对于流式数据处理时,我们更希望使用事件时间evnet time来对数据进行窗口划分,事件时间一般嵌入到数据本身,是数据中的一个列,例如:Iot设备产生实时数据时,我们对这些数据进行处理时,我们希望使用事件产生的时间,即:event time,而不希望使用Spark接收这些事件的时间进行窗口划分数据分析。此外,Structured Streaming 基于事件时间处理数据时还支持对延迟数据的处理,当有延迟数据到达时,Structured Streaming可以基于事件时间找到对应的窗口对数据进行更新。原创 2024-07-23 23:42:14 · 1218 阅读 · 0 评论 -
Spark实时(一):StructuredStreaming 介绍
SparkStreaming与Structured Streaming相比较,SparkStreaming是Spark最初的流处理框架,只能使用DStream算子编程,底层是RDD操作,而Structured Streaming是Spark2.0后退出的流式处理框架,处理支持Spark,底层操作是基于DataFrame/Dataset,目前也支持连续流处理模型,但是目前在实验阶段。SparkStreaming仅支持微批处理数据,很难做到毫秒级数据延迟,延迟高。原创 2024-07-23 23:10:23 · 1094 阅读 · 0 评论 -
大数据Spark(五十四):扩展阅读 SparkSQL底层如何执行
目录扩展阅读 SparkSQL底层如何执行RDD 和 SparkSQL 运行时的区别Catalyst扩展阅读 SparkSQL底层如何执行RDD 和 SparkSQL 运行时的区别RDD 的运行流程大致运行步骤先将 RDD解析为由 Stage组成的 DAG, 后将 Stage转为 Task直接运行问题任务会按照代码所示运行, 依赖开发者的优化, 开发者的会在很大程度上影响运行效率解决办法创建一个组件, 帮助开发者修改和优化代码, 但这在......原创 2021-05-18 23:24:52 · 3234 阅读 · 60 评论 -
大数据Spark(五十三):Structured Streaming Deduplication
Streaming Deduplication介绍在实时流式应用中,最典型的应用场景:网站UV统计。1:实时统计网站UV,比如每日网站UV;2:统计最近一段时间(比如一个小时)网站UV,可以设置水位Watermark;Structured Streaming可以使用deduplication对有无Watermark的流式数据进行去重操作:1.无 Watermark:对重复记录到达的时间没有限制。查询会保留所有的过去记录作为状态用于去重;2.有 Watermark:对重复记录.原创 2021-04-23 19:52:41 · 970 阅读 · 0 评论 -
大数据Spark(五十二):Structured Streaming 事件时间窗口分析
目录事件时间窗口分析时间概念event-time延迟数据处理延迟数据Watermarking 水位官方案例演示事件时间窗口分析在SparkStreaming中窗口统计分析:Window Operation(设置窗口大小WindowInterval和滑动大小SlideInterval),按照Streaming 流式应用接收数据的时间进行窗口设计的,其实是不符合实际应用场景的。例如,在物联网数据平台中,原创 2021-04-23 08:30:22 · 2241 阅读 · 0 评论 -
大数据Spark(五十一):Structured Streaming 物联网设备数据分析
在物联网时代,大量的感知器每天都在收集并产生着涉及各个领域的数据。物联网提供源源不断的数据流,使实时数据分析成为分析数据的理想工具。模拟一个智能物联网系统的数据统计分析,产生设备数据发送到Kafka,结构化流Structured Streaming实时消费统计。原创 2021-04-23 08:14:21 · 1012 阅读 · 0 评论 -
大数据Spark(五十):Structured Streaming 案例一实时数据ETL架构
在实际实时流式项目中,无论使用Storm、SparkStreaming、Flink及Structured Streaming处理流式数据时,往往先从Kafka 消费原始的流式数据,经过ETL后将其存储到Kafka Topic中,以便其他业务相关应用消费数据,实时处理分析,技术架构流程图如下所示:接下来模拟产生运营商基站数据,实时发送到Kafka 中,使用StructuredStreaming消费,经过ETL(获取通话状态为success数据)后,写入Kafka中,便于其他实时应用消费处理分析。原创 2021-04-23 07:37:36 · 1118 阅读 · 0 评论 -
大数据Spark(四十九):Structured Streaming 整合 Kafka
Structured Streaming很好的集成Kafka,可以从Kafka拉取消息,然后就可以把流数据看做一个DataFrame, 一张无限增长的大表,在这个大表上做查询,Structured Streaming保证了端到端的 exactly-once,用户只需要关心业务即可,不用费心去关心底层是怎么做的StructuredStreaming既可以从Kafka读取数据,又可以向Kafka 写入数据。Kafka 可以被看成一个无限的流,里面的流数据是短暂存在的,如果不消费,消息就过期滚动没了。原创 2021-04-23 01:02:38 · 1331 阅读 · 1 评论 -
大数据Spark(四十八):Structured Streaming 输出终端/位置
目录输出终端/位置文件接收器Memory SinkForeach和ForeachBatch SinkForeachForeachBatch代码演示输出终端/位置Structured Streaming 非常显式地提出了输入(Source)、执行(StreamExecution)、输出(Sink)的3个组件,并且在每个组件显式地做到fault-tolerant(容错),由此得到整个streaming程序的 end-to-end ex原创 2021-04-23 00:48:53 · 1088 阅读 · 0 评论 -
大数据Spark(四十七):Structured Streaming Sink 输出
目录Sink 输出输出模式触发间隔-了解查询名称检查点位置Sink 输出在StructuredStreaming中定义好Result DataFrame/Dataset后,调用writeStream()返回DataStreamWriter对象,设置查询Query输出相关属性,启动流式应用运行,相关属性如下:文档:http://spark.apache.org/docs/2.4.5/structured-st.原创 2021-04-23 00:40:08 · 1013 阅读 · 0 评论 -
大数据Spark(四十六):Structured Streaming Operations 操作
获得到Source之后的基本数据处理方式和之前学习的DataFrame、DataSet一致,不再赘述。原创 2021-04-23 00:22:58 · 811 阅读 · 0 评论 -
大数据Spark(四十五):Structured Streaming Sources 输入源
Sources 输入源从Spark 2.0至Spark 2.4版本,目前支持数据源有4种,其中Kafka 数据源使用作为广泛,其他数据源主要用于开发测试程序。文档:http://spark.apache.org/docs/2.4.5/structured-streaming-programming-guide.html#input-sources可以认为Structured Streaming = SparkStreaming + SparkSQL,对流式数......原创 2021-04-23 00:18:21 · 1148 阅读 · 0 评论 -
大数据Spark(四十四):Structured Streaming概述
Apache Spark在2016年的时候启动了Structured Streaming项目,一个基于Spark SQL的全新流计算引擎Structured Streaming,让用户像编写批处理程序一样简单地编写高性能的流处理程序。Structured Streaming并不是对Spark Streaming的简单改进,而是吸取了在开发Spark SQL和Spark Streaming过程中的经验教训,以及Spark社区和Databricks众多客户的反馈,重新开发的全新流式引擎,致力于为批.....原创 2021-04-22 20:59:28 · 1620 阅读 · 0 评论 -
大数据Spark(四十三):SparkStreaming整合Kafka 0.10 开发使用
直接到Kafka Topic中依据偏移量范围获取数据,进行处理分析;每批次中RDD的分区与Topic分区一对一关系;获取Topic中数据的同时,还可以获取偏移量和元数据信息;最大消费数据量:10000 * 3 * 5 = 150000 条。原创 2021-04-22 00:35:22 · 989 阅读 · 0 评论 -
大数据Spark(四十二):SparkStreaming的Kafka快速回顾与整合说明
在实际项目中,无论使用Storm还是SparkStreaming与Flink,主要从Kafka实时消费数据进行处理分析,流式数据实时处理技术架构大致如下:技术栈: Flume/SDK/Kafka Producer API -> KafKa —> SparkStreaming/Flink/Storm(Hadoop YARN) -> Redis -> UI1)、阿里工具Canal:监控MySQL数据库binlog文件,将数据同步发送到Kafka Topic中.....原创 2021-04-22 00:25:36 · 834 阅读 · 0 评论 -
大数据Spark(四十一):SparkStreaming实战案例六 自定义输出 foreachRDD
SparkStreaming实战案例六 自定义输出-foreachRDD需求对上述案例的结果数据输出到控制台外的其他组件,如MySQL/HDFS注意:foreachRDD函数属于将DStream中结果数据RDD输出的操作,类似transform函数,针对每批次RDD数据操作,但无返回值DStream.print方法源码底层调用的也是foreachRDD:代码实现package cn.itcast.streamingimport java.sql.{Conne..原创 2021-04-22 00:08:16 · 909 阅读 · 0 评论 -
大数据Spark(四十):SparkStreaming实战案例五 TopN-transform
目录SparkStreaming实战案例五 TopN-transform需求注意:代码实现SparkStreaming实战案例五 TopN-transform需求使用窗口计算模拟热搜排行榜:每隔10s计算最近20s的热搜排行榜!注意:DStream没有直接排序的方法!所以应该调用transform方法对DStream底层的RDD进行操作,调用RDD的排序方法!transform(函数),该函数会作用到DStream底层的RDD.原创 2021-04-22 00:04:03 · 1059 阅读 · 0 评论 -
大数据Spark(三十九):SparkStreaming实战案例四 窗口函数
窗口长度10s < 滑动间隔15s:每隔15s计算最近10s的数据--会丢失数据,开发不用。窗口长度10s = 滑动间隔10s:每隔10s计算最近10s的数据--滚动窗口。窗口长度10s > 滑动间隔5s:每隔5s计算最近10s的数据--滑动窗口。使用窗口计算: 每隔5s(滑动间隔)计算最近10s(窗口长度)的数据!窗口长度:要计算多久的数据。滑动间隔:每隔多久计算一次。原创 2021-04-21 23:58:41 · 1353 阅读 · 3 评论 -
大数据Spark(三十八):SparkStreaming实战案例三 状态恢复 扩展
实现SparkStreaming程序停止之后再启动时还能够接着上次的结果进行累加。先发送spark,得到spark,1。再发送spark,得到spark,2。再发送spark,得到spark,3。再停止程序,然后重新启动。原创 2021-04-21 23:53:48 · 2424 阅读 · 0 评论 -
大数据Spark(三十七):SparkStreaming实战案例二 UpdateStateByKey
对从Socket接收的数据做WordCount并要求能够和历史数据进行累加!如:先发了一个spark,得到spark,1然后不管隔多久再发一个spark,得到spark,2也就是说要对数据的历史状态进行维护!注意:可以使用如下API对状态进行维护。原创 2021-04-21 23:51:15 · 959 阅读 · 0 评论 -
大数据Spark(三十六):SparkStreaming实战案例一 WordCount
SparkStreaming实时处理数据性能如何(是否可以实时处理数据)?每批次Batch数据处理总时间TD = 批次调度延迟时间SD + 批次数据处理时间PT。nc是netcat的简称,原本是用来设置路由器,我们可以利用它向某个端口发送数据。每批次数据处理时间TD原创 2021-04-21 23:44:07 · 1016 阅读 · 0 评论 -
大数据Spark(三十五):SparkStreaming数据抽象 DStream
DStream内部是由一系列连续的RDD组成的,每个RDD都包含了特定时间间隔内的一批数据,DStream中每批次数据RDD在处理时,各个RDD之间存在依赖关系,DStream直接也有依赖关系,RDD具有容错性,那么DStream也具有容错性。通过WEB UI界面可知,对DStream调用函数操作,底层就是对RDD进行操作,发现很多时候DStream中函数与RDD中函数一样的。通过RDD-to-RDD函数作用于DStream中的各个RDD,可以是任意的操作,从而返回一个新的RDD。原创 2021-04-21 21:54:51 · 1065 阅读 · 0 评论 -
大数据Spark(三十四):Spark Streaming概述
Spark Streaming在很多实时数据处理的场景中,都需要用到流式处理(Stream Process)框架,Spark也包含了两个完整的流式处理框架Spark Streaming和Structured Streaming(Spark 2.0出现),先阐述流式处理框架,之后介绍Spark Streaming框架使用。Spark Streaming概述在传统的数据处理过程中,我们往往先将数据存入数据库中,当需要的时候再去数据库中进行检索查询,将处理的结果返回给请求的用户;另外,..原创 2021-04-21 19:56:39 · 3006 阅读 · 6 评论 -
大数据Spark(三十三):SparkSQL分布式SQL引擎
停止使用:在实际大数据分析项目中,使用SparkSQL时,往往启动一个ThriftServer服务,分配较多资源(Executor数目和内存、CPU),不同的用户启动beeline客户端连接,编写SQL语句分析数据。Spark Thrift Server将Spark Applicaiton当做一个服务运行,提供Beeline客户端和JDBC方式访问,与Hive中HiveServer2服务一样的。回顾一下,如何使用Hive进行数据分析的,提供哪些方式交互分析?原创 2021-04-20 22:29:18 · 1176 阅读 · 0 评论 -
大数据Spark(三十二):SparkSQL的External DataSource
在SparkSQL模块,提供一套完成API接口,用于方便读写外部数据源的的数据(从Spark 1.4版本提供),框架本身内置外部数据源:在Spark 2.4版本中添加支持。数据分析处理中,数据可以分为结构化数据、非结构化数据及半结构化数据。结构化数据源可提供有效的存储和性能。例如,Parquet和ORC等柱状格式使从列的子集中提取值变得更加容易。基于行的存储格式(如Avro)可有效地序列化和存储提供存储优势的数据。然而,这些优点通常以灵活性为代价。如因结构的固定性,格式转变可能相对困难。原创 2021-04-20 21:19:53 · 964 阅读 · 1 评论 -
大数据Spark(三十一):Spark On Hive
也可以将hive-site.xml分发到集群中所有Spark的conf目录,此时任意机器启动应用都可以访问Hive表数据。,所以SparkSQL天然无缝集成Hive,可以加载Hive表数据进行分析。,并放于node1的【原创 2021-04-20 08:34:54 · 1941 阅读 · 1 评论 -
大数据Spark(三十):SparkSQL自定义UDF函数
目录自定义UDF函数第一种:UDF(User-Defined-Function) 函数第二种:UDAF(User-Defined Aggregation Function) 聚合函数第三种:UDTF(User-Defined Table-Generating Functions) 函数SQL方式DSL方式代码演示自定义UDF函数无论Hive还是SparkSQL分析处理数据时,往往需要使用函数,SparkSQL模块本身自带很多实现公共功能的函数,在org.apac.....原创 2021-04-18 02:48:52 · 2053 阅读 · 1 评论 -
大数据Spark(二十九):SparkSQL案例四开窗函数
开窗函数的引入是为了既显示聚集前的数据,又显示聚集后的数据。即在每一行的最后一列添加聚合函数的结果。开窗用于为行定义一个窗口(这里的窗口是指运算将要操作的行的集合),它对一组值进行操作,不需要使用 GROUP BY 子句对数据进行分组,能够在同一行中同时返回基础行的列和聚合列。原创 2021-04-22 22:52:56 · 994 阅读 · 1 评论 -
大数据Spark(二十八):SparkSQL案例三电影评分数据分析
原因:在SparkSQL中当Job中产生Shuffle时,默认的分区数(spark.sql.shuffle.partitions )为200,在实际项目中要合理的设置。可以在构建SparkSession实例对象时进行设置。运行上述程序时,查看WEB UI监控页面发现,某个Stage中有200个Task任务,也就是说RDD有200分区Partition。原创 2021-04-17 14:18:05 · 4843 阅读 · 0 评论 -
大数据Spark(二十七):SparkSQL案例一花式查询和案例二WordCount
前面使用RDD封装数据,实现词频统计WordCount功能,从Spark 1.0开始,一直到Spark 2.0,建立在RDD之上的一种新的数据结构DataFrame/Dataset发展而来,更好的实现数据处理分析。),下面以WordCount程序为例编程实现,体验DataFrame使用。原创 2021-04-17 13:32:05 · 1053 阅读 · 0 评论 -
大数据Spark(二十六):SparkSQL数据处理分析
两种方式底层转换为RDD操作,包括性能优化完全一致,在实际项目中语句不通的习惯及业务灵活选择。无论哪种方式,都是相通的,必须灵活使用掌握。上述函数在实际项目中经常使用,尤其数据分析处理的时候,其中要注意,调用函数时,通常指定某个列名称,传递Column对象,通过。,将DataFrame/Dataset注册为临时视图或表,编写SQL语句,类似HiveQL;,调用DataFrame/Dataset API(函数),类似RDD中函数;调用DataFrame/Dataset中API(函数)分析数据,其中函数包含。原创 2021-04-16 22:54:33 · 2057 阅读 · 0 评论 -
大数据Spark(二十五):SparkSQL的RDD、DF、DS相关操作
SparkSession支持从不同的数据源加载数据,并把数据转换成DataFrame,并且支持把DataFrame转换成SQLContext自身中的表,然后使用SQL语句来操作数据。实际项目开发中,往往需要将RDD数据集转换为DataFrame,本质上就是给RDD加上Schema信息,官方提供两种方式:类型推断和自定义Schema。使用SparkSession加载数据源数据,将其封装到DataFrame或Dataset中,直接使用。,构建Schema,应用到RDD数据集,将其转换为DataFrame。原创 2021-04-16 08:39:18 · 1496 阅读 · 0 评论 -
大数据Spark(二十四):SparkSQL数据抽象
基于上述的两点,从Spark 1.6开始出现Dataset,至Spark 2.0中将DataFrame与Dataset合并,其中DataFrame为Dataset特殊类型,类型为Row。Dataset是在Spark1.6中添加的新的接口,是DataFrame API的一个扩展,是Spark最新的数据抽象,结合了RDD和DataFrame的优点。,调用Dataset的方法先会生成逻辑计划,然后被Spark的优化器进行优化,最终生成物理计划,然后提交到集群中运行;原创 2021-04-16 00:43:49 · 1124 阅读 · 0 评论 -
大数据Spark(二十三):SparkSQL 概述
SparkSQL 概述Spark SQL允许开发人员直接处理RDD,同时可以查询在Hive上存储的外部数据。Spark SQL的一个重要特点就是能够统一处理关系表和RDD,使得开发人员可以轻松的使用SQL命令进行外部查询,同时进行更加复杂的数据分析。前世今生SparkSQL模块一直到Spark 2.0版本才算真正稳定,发挥其巨大功能,发展经历如下几个阶段。Shark 框架-淘汰了首先回顾SQL On Hadoopp框架:Hive(可以说Hive时大数据生态系统中......原创 2021-04-15 08:32:29 · 1134 阅读 · 0 评论 -
大数据Spark(二十二):内核原理
Spark的核心是根据RDD来实现的,Spark Scheduler则为Spark核心实现的重要一环,其作用就是任务调度。Spark的任务调度就是。基于Spark的任务调度原理,可以合理规划资源利用,做到尽可能用最少的资源高效地完成任务计算。原创 2021-04-15 00:39:29 · 1097 阅读 · 0 评论