2021数仓面试笔记

2021-04-13 14:25:39 浏览数 (1)

一、hive调优点

  并行执行模式   推测执行模式   数据倾斜时开启负载均衡模式   map缓冲区大小   溢写磁盘百分比   开启combanier提前预聚合   设置reduce拉取数据的内存缓冲区大小   开启kryo序列化   使用Snappy压缩方式   合并小文件   开启Jvm重用

数据倾斜处理
hive on hadoop数据倾斜 :

  开启map聚合并开启负载均衡模式   调大reduce个数,增大任务并行度   SQL逻辑优化 (count(distonct key))   调节mapjion的触发条件,使reduce join转为map join

hive on spark数据倾斜:

  在Hive ETL阶段按照某一纬度用特定格式进行聚合数据   过滤导致倾斜但是舍弃对业务没有影响的key   设置任务并行度 和shuffle任务并行度   对SQL逻辑进行调优

数据倾斜处理过程和前后差异(示例)

  通过在ETL阶段按照客户id将客户的购买和基本数据进行预聚合,并将一些没用的导致倾斜的空值过滤掉,然后调节了任务并行度,随后将count(diatinctkey)换成group by 再count的方式,任务执行时间由原来的n个多小时变成min/hour…

二、数据结构与算法

冒泡(时间复杂度O(n²) 空间复杂度O(1) 总共需要比较arrlegth-1次 每次比较i-ArrLegth-1次)

快速排序(时间复杂度 O(nlogn)空间复杂度(logn)首先选取第一个元素作为比较基准元素 将大于该该元素的挪到元素右边,小于的挪到左边 递归调用)

归并排序(时间复杂度O(nlogn)空间复杂度O(n)分而治之 )

二分查找(时间复杂度O(log2n) 空间复杂度O(1) 折半查找 基于有序数组)

三、设计模式:

单例模式(饿汉式|懒汉式|双重检查|枚举|静态内部类)

工厂模式(普通工厂 | 工厂方法模式 | 抽象工厂模式 )

四、Spark参数调优点(参考链接)

  cache内存占比   shuffle内存占比   并行度   executer个数|内存|cpu数   driver内存   executer堆外内存空间大小   链接等待时长

五、常用的Hive函数

  date_add|date_sub|date_format|getjsonobject|regexp_replace|last_day|collect_set|collect_list|concat_ws|split|later view exploderd|laglead

六、mapreduce过程

七、Hadoop Yarn任务调度流程

八、SparkStreaming 任务调度和调优

九、数仓建模流程

  1. 确定主题   2. 确定量度【统计的指标】   3. 确认粒度【最小粒度原则】   4. 确认维度【分析的各个角度,确认维度的层次和级别】   5. 创建事实表

十、缓慢变化维(拉链表的实现步骤)

十一、count(1)count(*)count(字段)的区别

  count(1)和count(*)都会对全表进行扫描,统计所有记录的条数,包括那些为null的记录,因此,它们的效率可以说是相差无几。而count(字段)则与前两者不同,它会统计该字段不为null的记录条数。

十二、Sql执行顺序

十三、平常工作中的任务需求和各种业务逻辑以及做了什么?

十四、各种SQL业务实现

十五、传统数据库和数据仓库的区别?OLAP和OLTP的区别?

  OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。二者的主要区别对比如下表所示。

对比属性

OLTP

OLAP

读特性

每次查询只返回少量记录

对大量记录进行汇总

写特性

随机、低延时写入用户的输入

批量导入

使用场景

用户,Java EE项目

内部分析师,为决策提供支持

数据表征

最新数据状态

随时间变化的历史状态

数据规模

GB

TB到PB

0 人点赞