【大数据技术Spark】DStream编程操作讲解实战(图文解释 附源码)

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 【大数据技术Spark】DStream编程操作讲解实战(图文解释 附源码)

DStream编程

批处理引擎Spark Core把输入的数据按照一定的时间片(如1s)分成一段一段的数据,每一段数据都会转换成RDD输入到Spark Core中,然后将DStream操作转换为RDD算子的相关操作,即转换操作、窗口操作以及输出操作。RDD算子操作产生的中间结果数据会保存在内存中,也可以将中间的结果数据输出到外部存储系统中进行保存。

转换操作

1:无状态转换操作

无状态转化操作每个批次的处理不依赖于之前批次的数据。常见的 RDD 转化操作,例如 Map()、filter()、ReduceByKey() 等,都是无状态转化操作。

2:有状态转化操作:

有状态转化操作需要使用之前批次的数据或者是中间结果来计算当前批次的数据。有状态转化操作包括基于滑动窗口的转化操作和追踪状态变化的转化操作。

DStream API提供的与窗口操作相关的方法

DStream API提供的与输出操作相关的方法

编写Spark Streaming程序的基本步骤是:

1)通过创建输入DStream来定义输入源。

2)通过对DStream应用转换操作和输出操作来定义流计算。

3)用streamingContext.start()来开始接收数据和处理流程

4)通过streamingContext.awaitTermination()方法来等待处理结束(手动结束或因为错误而结束)。

5)可以通过streamingContext.stop()来手动结束流计算进程。

通过示例进行演示,此示例为监视一个文件夹的log日志,并计算每个单词出现的次数

cogroup和join算子需要两个并行数据流,对两个数据流直接关联,不同的是join算子是把两个RDD按照相同的key拼在一起,类似SQL中的等值连接,可以类似的使用其他算子进行RDD的左连接等,而cogroup算子是把两个RDD按照key拼起来,但是它会汇总得到的value,最后的结果的条数是根据key决定的,有多少key就汇总成多少条数据,然后把RDD的所有相同的key的value放到一个Iterable里面,类似于SQL里面的全连接

设置为本地运行模式,2个线程,一个监听,另一个处理数据
    val sparkConf = new SparkConf().setAppName("WordCountStreaming").setMaster("local[2]")
    // 时间间隔为20秒
    val stc = new StreamingContext(sparkConf, Seconds(20))
    //定义输入源,监听本地目录,也可以采用HDFS文件
    val lines = stc.textFileStream("E:/log")
    //应用转换操作flatMap流计算
    val words = lines.flatMap(_.split(" "))
    //应用转换操作Map和ReduceByKey计算
    val wordCounts = words.Map(x => (x, 1)).ReduceByKey(_ + _)
    wordCounts.print()
    //开始接收数据和处理流程
    stc.start()
    //等待处理结束
    stc.awaitTermination()
//创建两个可被并行操作的分布式数据集
    val idName = sc.parallelize(Array((1, "张三"), (2, "李四"), (3, "王五")))
    val idAge = sc.parallelize(Array((1, 30), (2, 29), (4, 21)))
    println("\ncogroup\n")
    //对两个并行数据集进行cogroup操作
    idName.cogroup(idAge).collect().foreach(println)
    println("\njoin\n")
    //对两个并行数据集进行join操作
     idName.join(idAge).collect().foreach(println)
 //3.获取StreamingContext对象,5秒一个批次
    val ssc = new StreamingContext(sparkContext,Seconds(5))
    //4.接收socket的数据
    val textStream: ReceiverInputDStream[String] = ssc.socketTextStream("hhaonote",9999)
    //5.获取每一行的单词
    val words: DStream[String] = textStream.flatMap(_.split(" "))
    //6.为每一个单词置为1
    val wordAndOne: DStream[(String, Int)] = words.Map((_,1))
     //7.每隔10秒统计最近10秒的搜索词出现的次数
    val result: DStream[(String, Int)] = wordAndOne.ReduceByKeyAndWindow((x:Int,y:Int)=>x+y,Seconds(10),Seconds(10))
    //8.打印
    result.print()

创作不易 觉得有帮助请点赞关注收藏~~~

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
3月前
|
存储 机器学习/深度学习 SQL
大数据处理与分析技术
大数据处理与分析技术
230 2
|
3月前
|
存储 分布式计算 NoSQL
【赵渝强老师】大数据技术的理论基础
本文介绍了大数据平台的核心思想,包括Google的三篇重要论文:Google文件系统(GFS)、MapReduce分布式计算模型和BigTable大表。这些论文奠定了大数据生态圈的技术基础,进而发展出了Hadoop、Spark和Flink等生态系统。文章详细解释了GFS的架构、MapReduce的计算过程以及BigTable的思想和HBase的实现。
208 0
|
2月前
|
分布式计算 大数据 数据处理
技术评测:MaxCompute MaxFrame——阿里云自研分布式计算框架的Python编程接口
随着大数据和人工智能技术的发展,数据处理的需求日益增长。阿里云推出的MaxCompute MaxFrame(简称“MaxFrame”)是一个专为Python开发者设计的分布式计算框架,它不仅支持Python编程接口,还能直接利用MaxCompute的云原生大数据计算资源和服务。本文将通过一系列最佳实践测评,探讨MaxFrame在分布式Pandas处理以及大语言模型数据处理场景中的表现,并分析其在实际工作中的应用潜力。
109 2
|
2月前
|
SQL 运维 大数据
轻量级的大数据处理技术
现代大数据应用架构中,数据中心作为核心,连接数据源与应用,承担着数据处理与服务的重要角色。然而,随着数据量的激增,数据中心面临运维复杂、体系封闭及应用间耦合性高等挑战。为缓解这些问题,一种轻量级的解决方案——esProc SPL应运而生。esProc SPL通过集成性、开放性、高性能、数据路由和敏捷性等特性,有效解决了现有架构的不足,实现了灵活高效的数据处理,特别适用于应用端的前置计算,降低了整体成本和复杂度。
|
3月前
|
机器学习/深度学习 存储 大数据
在大数据时代,高维数据处理成为难题,主成分分析(PCA)作为一种有效的数据降维技术,通过线性变换将数据投影到新的坐标系
在大数据时代,高维数据处理成为难题,主成分分析(PCA)作为一种有效的数据降维技术,通过线性变换将数据投影到新的坐标系,保留最大方差信息,实现数据压缩、去噪及可视化。本文详解PCA原理、步骤及其Python实现,探讨其在图像压缩、特征提取等领域的应用,并指出使用时的注意事项,旨在帮助读者掌握这一强大工具。
173 4
|
3月前
|
机器学习/深度学习 存储 大数据
云计算与大数据技术的融合应用
云计算与大数据技术的融合应用
|
3月前
|
SQL 存储 大数据
单机顶集群的大数据技术来了
大数据时代,分布式数仓如MPP成为热门技术,但其高昂的成本让人望而却步。对于多数任务,数据量并未达到PB级,单体数据库即可胜任。然而,由于SQL语法的局限性和计算任务的复杂性,分布式解决方案显得更为必要。esProc SPL作为一种开源轻量级计算引擎,通过高效的算法和存储机制,实现了单机性能超越集群的效果,为低成本、高效能的数据处理提供了新选择。