快手数开面经

数仓的星型模型和雪花模型是什么?

星型模型(Star Schema)和雪花模型(Snowflake Schema)都是数据仓库中的数据模型。这两种模型主要用于组织和管理大量数据,并能够快速、高效地处理用户的查询请求。

星型模型

星型模型是一种简单的数据模型,它由一个大的“事实表”(Fact Table)和多个“维度表”(Dimension Tables)组成。事实表位于模型的中心,包含了业务过程的量化数据,如销售金额、销售数量等。维度表围绕事实表排列,每个维度表包含了对事实数据的某种视角或分类,如时间、地点、产品等。星型模型的名字来源于它的形状:一个中心表和多个外围表形成了一个星形结构。

星型模型的优点包括简单易理解,查询效率高,因为它的结构简单,所以在查询时只需要进行少量的表连接操作。

雪花模型

雪花模型是星型模型的一个变种,它的主要区别在于维度表的复杂性。在雪花模型中,维度表被进一步细分为多个相关的表,形成一种层级或者树状结构。这种模型的名字来源于它的形状:像雪花一样有许多分支。

雪花模型的优点是可以更细致地组织数据,提供更丰富的查询维度。但是,由于维度表的复杂性,查询效率可能会降低,需要进行更多的表连接操作。

数仓分层怎么做?有什么好处?

数据仓库(Data Warehouse)的分层主要是将数据仓库分为不同的逻辑层,以便于数据管理和数据分析。常见的数据仓库分层模型包括以下三层:数据源层,数据集成层,以及数据访问层。

  1. 数据源层:这一层包含了所有原始的数据源,可以是关系数据库,也可以是非关系数据库,或者是其他类型的数据源如文件系统、Web服务等。
  2. 数据集成层:这一层的主要任务是提取、转换和加载(ETL)数据源层的数据。数据在这一层被清洗、转换和集成,以生成一个统一的、一致的数据视图。这一层通常包含一个或多个数据仓库和数据集市。
  3. 数据访问层:这一层为最终用户提供数据访问服务。用户可以通过各种工具(例如报表工具、数据挖掘工具、在线分析处理(OLAP)工具等)查询和分析数据。

数据仓库分层的好处主要有以下几点:

  • 提高数据管理的效率:分层可以帮助我们更好地组织和管理数据。每一层都有其特定的任务和责任,这样可以使数据管理工作更加清晰和高效。
  • 提升数据的质量和一致性:在数据集成层,数据被清洗和转换,从而提高了数据的质量。同时,由于数据被集成到一个统一的视图中,所以数据的一致性也得到了保证。
  • 优化数据访问性能:通过在数据访问层进行数据的聚合和索引,可以大大提高数据查询的性能。
  • 保护数据安全:分层模型也有助于数据的安全管理。例如,可以通过在数据访问层设置权限控制,限制用户只能访问他们被授权的数据。

MR和Spark的shuffle 过程?

MapReduce 中的 shuffle 过程主要发生在 Map 阶段和 Reduce 阶段之间。具体步骤如下:

  1. Map 阶段:在 Map 阶段,输入数据被分成很多小块,并被分配给不同的 Map 任务。每个 Map 任务处理一小块数据,并产生一些中间结果(键值对)。
  2. Shuffle 阶段:在 Shuffle 阶段,Map 任务产生的中间结果会被重新分配给不同的 Reduce 任务。具体来说,这个过程是基于键值对的键进行的。所有具有相同键的键值对都会被发送到同一个 Reduce 任务。
  3. Reduce 阶段:在 Reduce 阶段,每个 Reduce 任务会处理它收到的所有键值对,并生成最终的输出结果。

Spark 中的 shuffle 过程与 MapReduce 的类似,但也有一些区别。在 Spark 中,shuffle 主要发生在宽依赖(wide dependencies)的操作中,如 groupByKey,reduceByKey,join 等。

在 Spark 中,每个任务会生成一些数据,并将这些数据写入本地磁盘。然后,这些任务会告诉驱动程序(driver program)它们已经生成了哪些数据。当需要这些数据的其他任务运行时,它们会从需要的任务那里直接拉取数据。

Spark 的 shuffle 过程优化了数据的读取和写入,减少了网络传输的数据量。但由于 shuffle 过程需要大量的磁盘 I/O 和网络 I/O,因此通常会消耗很多资源,可能成为 Spark 应用的性能瓶颈。为了解决这个问题,Spark 提供了一些优化策略,如使用 reduceByKey 而不是 groupByKey,或者使用 broadcast 变量等。

Doris底层了解吗,和别的引擎对比?

Apache Doris 是一个 MPP(大规模并行处理)架构的开源分析型数据库,最初由百度开发,后来贡献给 Apache 基金会。它的目标是为在线分析(OLAP)提供高并发、低延迟的查询性能,并能处理大规模数据。

以下是 Doris 的一些主要特性:

  • 列式存储:Doris 采用列式存储模型,这对于分析型查询非常有效,因为它可以有效地减少 IO,提高查询性能。
  • 向量化执行引擎:Doris 的查询执行引擎采用向量化的设计,能够充分利用现代硬件的优势,如 SIMD 指令,提高数据处理的效率。
  • 多表连接优化:Doris 支持各种表连接算法,如 hash join,nested loop join 等,并能进行多表连接的优化。
  • MPP 架构:Doris 采用 MPP 架构,能够在多个节点上并行处理数据,提供高性能的查询能力。
  • 高可用与容错:Doris 支持数据冗余和自动故障恢复,提供高可用性。

与其他引擎对比,Doris 在处理大规模数据的在线分析查询方面具有优势。例如,与 Hadoop 的 MapReduce 或 Spark 相比,Doris 提供了更高的查询性能和更低的延迟。与传统的关系数据库如 MySQL 相比,Doris 能处理的数据量更大,更适合分析型负载。

#面经#

解决职场真实面试问题,分享同学真实成功案例,欢迎订阅关注!

全部评论
老兄,这是几面的题
点赞 回复 分享
发布于 2023-08-21 14:19 澳大利亚

相关推荐

投递汉得等公司10个岗位
点赞 评论 收藏
分享
8 85 评论
分享
牛客网
牛客企业服务