建设网站公司简介,wordpress 免费 企业 主题,网站建设|,免费个人网站源码下载什么是Spark 是一个基于内存的#xff0c;用于大规模数据处理#xff08;离线计算、实时计算、快速查询#xff08;交互式查询#xff09;#xff09;的统一分析引擎#xff0c;因为是基于内存的所以可以更快的完成任务 离线计算:离线计算一般存储在HDFS中使用MapReduce或…什么是Spark 是一个基于内存的用于大规模数据处理离线计算、实时计算、快速查询交互式查询的统一分析引擎因为是基于内存的所以可以更快的完成任务 离线计算:离线计算一般存储在HDFS中使用MapReduce或Hive处理离线计算启动进程处理完成后销毁进程 实时计算实时计算一般存储在消息队列中使用SparkDStream或者Storm、Flink等其他实时计算框架进程7*24小时运行都在应用场景 大规模数据处理和分析 流处理 Spark Streaming可以处理实时数据流并将其转换为可供分析和存储的批处理数据。 机器学习 Spark提供了机器学习库可以支持各种机器学习算法和模型训练。特点 快: Spark 计算速度是 MapReduce 计算速度的10-100倍 易用: MapReduce 支持1种计算模型Spark 支持更多的计算模型 通用: Spark 能够进行离线计算、交互式查询快速查询、实时计算、机器学习、图计算 兼容性Spark 支持大数据中的 Yarn 调度支持 mesos。可以处理 hadoop 计算的数据。架构组件 Spark Core: Spark 核心功能均由 Spark Core 模块提供是 Spark 运行的基础。 Spark SQL:Spark 的 SQL 查询和分析引擎它可以将结构化数据转换为 RDD 数据集然后使用 Spark 的优化算法来执行查询。 Spark StreamingSpark 的流处理引擎它可以处理实时数据流并将其转换为 RDD 数据集然后使用 Spark 的优化算法来执行查询。 Spark MLlib机器学习库它提供了一组 API用于训练和部署机器学习模型。 Spark GraphX的图计算库它提供了一组 API用于处理图数据工作原理 应用程序初始化Spark 应用程序首先在 driver 中初始化 SparkContext 数据分区Spark 将数据分成多个分区然后在集群中的不同节点上并行处理这些分区。 任务调度Spark 的任务调度器将任务分配给可用的执行器。 数据传输Spark 将数据传输到执行器以进行处理。 数据处理执行器使用 RDD API 对数据进行处理。 结果返回执行器将结果返回到驱动程序。基本概念 RDD弹性分布式数据集是一种容错的、可以被并行操作的元素集合是 Spark 对所有数据处理的一种基本抽象。 DAG有向无环图是 Spark 中最重要的一个概念之一它描述了数据的依赖关系。 Transformation转换操作是 Spark 中最常用的一种操作包括 map、filter、flatmap 等。 Action动作操作是 Spark 中最基本的一种操作包括 count、collect、saveAsTextFile 等。常踩的坑 SparkSQL查询优化SparkSQL是Spark的一个模块它提供了一种标准化的查询语言可以轻松操作存储在各种存储系统中的数据。但是如果查询优化不当也会影响程序的运行效率 整合Hive报错: 解决方法是在spark-submit命令中添加上hive-site.xml配置文件。 数据倾斜问题: Spark SQL 的执行过程中由于某些 key 的数据量过大导致这些 key 对应的 partition 中的数据量过大从而使得这些 partition 的计算时间过长从而影响整个查询的执行效率 分区键的设计 分桶 哈希算法和随机数解决 Spark SQL 数据类型不匹配