Hive 的 HSQL 转换为 MapReduce 的过程? HiveSQL ->AST(抽象语法树) -> QB(查询块) ->OperatorTree(操作树)-> 优化后的操作树->mapreduce 任务树->优化后的 mapreduce 任务树 过程描述如下: SQL Parser:Antlr 定义 SQL 的语法规则,完成 SQL 词法,语法解析,将SQL 转化为抽象语法树 AST Tree; Semantic Analyzer:遍历 AST Tree,抽象出查询的基本组成单元QueryBlock; Logical plan:遍历 Que 阅读全文 → 2023-01-19
Hive 表关联查询,如何解决数据倾斜的问题? 1)倾斜原因:map 输出数据按 key Hash 的分配到 reduce 中,由于 key 分布不均匀、业务数据本身的特、建表时考虑不周、等原因造成的 reduce 上的数据量差异过大。 (1)key 分布不均匀; (2) 业务数据本身的特性; (3)建表时考虑不周; (4)某些 SQL 语句本身就有数据倾斜; 如何避免:对于 key 为空产生的数据倾斜,可以对其赋予一个随机值。 2)解决方案 (1)参 数 调 节 : hive. 阅读全文 → 2023-01-19
不需要排序的 hash shuffle 是否一定比需要排序的 sort shuffle 速度快? 不一定,当数据规模小,Hash shuffle 快于 Sorted Shuffle 数据规模大的时候;当数据量大,sorted Shuffle 会比 Hash shuffle 快很多,因为数量大的有很多小文件,不均匀,甚至出现数据倾斜,消耗内存大,1.x 之前 spark 使用hash,适合处理中小规模,1.x 之后,增加了 Sorted shuffle,Spark 更能胜任大规模处理了。 阅读全文 → 2023-01-18
Spark 应用程序的执行过程是什么? 1)构 建 Spark Application 的 运 行 环 境 ( 启 动 SparkContext), SparkContext 向资源管理器(可以是 Standalone、Mesos 或 YARN)注册并申请运行 Executor 资源; 2)资源管理器分配 Executor 资源并启动 StandaloneExecutorBackend, Executor 运行情况将随着心跳发送到资源管理器上; 3)SparkContext 构建成 DAG 图,将 DAG 图分解成 Stage,并把 阅读全文 → 2023-01-18
Spark 使用 parquet 文件存储格式能带来哪些好处? 1)如果说 HDFS 是大数据时代分布式文件系统首选标准,那么 parquet 则是整个大数据时代文件存储格式实时首选标准。 2)速度更快:从使用 spark sql 操作普通文件 CSV 和 parquet 文件速度对比上看,绝大多数情况会比使用 csv 等普通文件速度提升 10 倍左右,在一些普通文件系统无法在 spark 上成功运行的情况下,使用 parquet 很多时候可以成功运行。 3)parquet 的压缩技术非常稳定出色,在 spark sql 中对压缩技术的处理可能无法正常的完 阅读全文 → 2023-01-18
Spark on Yarn 模式有哪些优点? 1)与其他计算框架共享集群资源(Spark 框架与 MapReduce 框架同时运行, 如果不用 Yarn 进行资源分配,MapReduce 分到的内存资源会很少,效率低下);资源按需分配,进而提高集群资源利用等。 2)相较于 Spark 自带的 Standalone 模式,Yarn 的资源分配更加细致。 3)Application 部署简化,例如 Spark,Storm 等多种框架的应用由客户端提交后,由 Yarn 负责资源的管理和调度,利用 Container 作为资源隔离的单位,以它为单 阅读全文 → 2023-01-18