当前位置: 首页 > news >正文

走进Spark

  • 什么是Spark
    • 是一个基于内存的,用于大规模数据处理(离线计算、实时计算、快速查询(交互式查询))的统一分析引擎,因为是基于内存的所以可以更快的完成任务
      • 离线计算:离线计算一般存储在HDFS中使用MapReduce或Hive处理,离线计算启动进程,处理完成后销毁进程
      • 实时计算:实时计算一般存储在消息队列中,使用Spark(DStream)或者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 Streaming:Spark 的流处理引擎,它可以处理实时数据流并将其转换为 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 数据类型不匹配
http://www.lryc.cn/news/192899.html

相关文章:

  • “小程序:改变电商行业的新趋势“
  • Python与CAD系列基础篇(五)创建图案填充
  • 终端仿真软件连接交换机调试步骤
  • redis基本数据类型
  • C++笔记之std::async的用法
  • OpenCV4(C++)—— 图像连通域的详细分析
  • Rule-Engine-Starter V1.0.0
  • 绘制X-Bar-S和X-Bar-R图,监测过程,计算CPK过程能力指数
  • 【每日一句】只出现一次的数
  • GDB调试程序常用命令
  • C语言,求两个数的二进制表达中,有多少个位数不同
  • 解决Win10电脑无线网卡的移动热点无法开启问题
  • Spring framework Day10:JSR330注入注解
  • Java开发中List数据量大,需要分片批次处理
  • Apache Doris 2.0.2 版本正式发布!
  • transformers架构实现
  • C++类型推导
  • Open3D(C++) SVD分解求两个点云的变换矩阵
  • rtmp htttp推流Windows桌面到srs进行播放
  • NSSCTF做题(9)
  • 【09】基础知识:React组件的生命周期
  • Pytorch之ConvNeXt图像分类
  • Linux系统编程:makefile以及文件系统编程
  • 《动手学深度学习 Pytorch版》 8.5 循环神经网络的从零开始实现
  • 写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换
  • Zabbix监控系统详解2:基于Proxy分布式实现Web应用监控及Zabbix 高可用集群的搭建
  • docker 安装oracle
  • C++ vector 自定义排序规则(vector<vector<int>>、vector<pair<int,int>>)
  • 机器学习 Q-Learning
  • 产品设计心得体会 优漫动游