欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 游戏 > spark总结

spark总结

2025/5/1 11:18:56 来源:https://blog.csdn.net/2401_84627304/article/details/147565924  浏览:    关键词:spark总结

Spark核心概念与架构:

Spark是基于内存的大数据分析计算引擎,核心模块包括Spark Core、SQL、Streaming、MLlib和GraphX 。

其运行模式多样,如Local、Standalone、Yarn等,各有特点和适用场景。Driver负责作业调度,Executor执行任务,此外还有Master、Worker等组件协同工作。、

特点

速度快:基于内存计算,能将数据缓存在内存中,避免频繁读写磁盘,大幅提高处理速度。同时采用了先进的优化技术,如数据分区、推测执行等。

易用性高:支持多种编程语言,如Scala、Java、Python和R等,提供了丰富的API,方便用户进行开发。

通用性强:提供了多种高层组件,包括用于批处理的Spark SQL、用于流计算的Spark Streaming、用于机器学习的MLlib和用于图计算的GraphX等,能满足不同类型的大数据处理需求。

可扩展性好:能轻松扩展到大量的节点上,处理大规模的数据集,具有良好的容错机制,可自动处理节点故障。

核心概念

RDD(弹性分布式数据集):RDD是核心数据结构,具备多种特性和核心属性。是Spark中最基本的数据抽象,代表一个不可变、可分区、能被并行操作的元素集合。

DAG(有向无环图):用于描述RDD之间的依赖关系,Spark通过DAG调度器将作业分解为多个阶段进行执行。

                任务调度:Spark采用两级调度模型,由DAG调度器和任务调度器协同工作,将任务分配到集群中的各个节点上执行。

Executor:运行在工作节点(Worker Node)上的进程,负责执行任务并处理数据。

Driver:程序的入口点,负责创建 SparkContext,协调各个工作节点,调度任务。

编程

Spark Core编程:

        RDD是核心数据结构,具备多种特性和核心属性。其算子丰富,分为Value、双Value和Key - Value类型,可实现数据转换、聚集等操作。行动算子用于触发实际计算。累加器和广播变量用于分布式环境下的数据共享与通信。

Spark SQL编程:

        用于结构化数据处理,提供DataFrame和DataSet编程抽象。可通过多种方式创建,且相互间能灵活转换。支持DSL和SQL语法查询,可进行数据加载与保存,还能连接Hive,有多种使用方式和操作方法。

Spark Streaming编程:

        用于流式数据处理,以DStream为抽象表示。可从多种数据源创建DStream,其操作包括转换和输出

创建DStream的三种方式:RDD队列、自定义数据源、kafka数据源

转换操作有无状态和有状态之分,还有窗口操作;

输出操作决定数据去向,如打印、保存等。

与其他组件整合:

        Kafka作为分布式消息系统,与Spark紧密结合。在Spark Streaming中可通过DirectAPI从Kafka读取数据。(DirectAPI:是由计算的 Executor 来主动消费 Kafka 的数据,速度由自身控制。)

        此外,Kafka还能与Flume整合,实现数据的传输与处理 。

输出操作如下:

        print():在运行流程序的驱动结点上打印 DStream 中每一批次数据的最开始 10 个元素。这用于开发和调试。

        saveAsTextFiles(prefix, [suffix]):以 text 文件形式存储这个 DStream 的内容。每一批次的存储文件名基于参数中的 prefix 和 suffix。”prefix-Time_IN_MS[.suffix]”。

        saveAsObjectFiles(prefix, [suffix]):以 Java 对象序列化的方式将 Stream 中的数据保存为SequenceFiles . 每一批次的存储文件名基于参数中的为"prefix-TIME_IN_MS[.suffix]".

        saveAsHadoopFiles(prefix, [suffix]):将 Stream 中的数据保存为 Hadoop files. 每一批次的存储文件名基于参数中的为"prefix-TIME_IN_MS[.suffix]"。

        foreachRDD(func):这是最通用的输出操作,即将函数 func 用于产生于 stream 的每一个RDD。其中参数传入的函数 func 应该实现将每一个 RDD 中数据推送到外部系统,如将RDD 存入文件或者通过网络将其写入数据库。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词