一、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|lag
|lead
六、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 |