自我介绍
在学校学的大数据吗
说一下数仓项目
数据仓库:面向主题的,集成的,相对稳定的,反应历史变化的数据集合,用于支持管理决策。
数仓分层规范是什么
- ODS
- 保持数据原貌
- 采用压缩(压缩比一般100g数据压缩完10g左右)、列式存储
- 创建分区表
- DWD
- 数据清洗
- 去除空值
- 过滤核心字段无意义的数据(如:用户id为null)
- 清洗掉多少数据算合理
- 1万数据清洗掉1条
- 脱敏
- 对手机号、身份证号、密码等敏感数据脱敏
- 维度退化
- 对业务数据传过来的表进行维度退化和降维(如:商品一级二级、省市县、年月日)
- 采用压缩、列式存储
- 创建分区表
- 数据清洗
- DWS
- 有3-10张宽表(能处理70%以上的需求)
- 用户行为宽表
- 商品宽表
- 登录注册宽表
- 用户购买商品明细宽表
- 购物车宽表
- 售后宽表
- 异常错误宽表
- 有3-10张宽表(能处理70%以上的需求)
- ADS
通过数据分层管理可以简化数据清洗的过程,因为把原来一步的工作分到了多个步骤去完成,每一层的处理逻辑都相对简单和容易理解,从而达到解耦的目的,这样我们比较容易保证每一个步骤的正确性,当数据发生错误的时候,方便问题排查和追溯定位。
- 把复杂问题简单化
将复杂的任务分解成多层来完成,每一层只处理简单的任务,方便定位问题
- 减少重复开发
规范数据分层,通过中间层数据,能够极大的减少重复计算,增加一次计算结果的复用性
- 隔离原始数据
不论是数据的异常还是数据敏感性,使真是数据与统计数据解耦。
为什么不分4 5层?
从数据聚合程度来讲,越上层的聚合程度越高,当然聚合程度越高可理解程度就越低
**分层是为了解决 ETL 任务及工作流的组织、数据的流向、读写权限的控制、不同需求的满足等各类问题
数据分层将可以给我们带来如下的好处:
1、清晰数据结构:每一个数据分层都有它的作用域和职责,在使用表的时候能更方便地定位和理解
2、减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算
3、统一数据口径:通过数据分层,提供统一的数据出口,统一对外输出的数据口径
4、复杂问题简单化:将一个复杂的任务分解成多个步骤来完成,每一层解决特定的问题
建模方法论了解吗
- 访问性能
- 数据成本
- 使用效率
- 数据质量
范式建模(E-R模型)
将事物抽象为“实体”、“属性”、“关系”来表示数 据关联和事物描述;实体:Entity,关系:Relationship,这种对数据的抽象 建模通常被称为ER实体关系模型
维度建模
表划分为事实表、维度表两种类型
维度建模模型分裂:
星型模型(推荐)和雪花模型
在复合式的数据仓库架构中,操作型或事务型系统的数据源,通过ETL抽取转换和加载到数据仓库的ODS层,然后通过ODS的数据,利用范式建模方法,建设原子数据的数据仓库EDW,然后基于EDW,利用维度建模方法建设数据集市。
Data Vault模型
Anchor模型
数仓模型有哪些
模型实现
模型的实现主要指的是在维度建模过程中,需要对维度表和事实表进行关联设计,而这里我们对维度表的设计,就决定了我们最终与事实表关联的之后的形态。也就是说我们可以根据事实表和维度表的关系,又可将常见的模型分为星型模型和雪花型模型
星型模型
当所有维表都直接连接到事实表上时,整个图解就像星星一样,故将该模型称为星型模型。 存在冗余
**
核心是一个事实表及多个非正规化描述的维度表组成,维度表之间是没有关联的,维度表是直接关联到事实表上的,只有当维度表极大,存储空间是个问题时,才考虑雪花型维度,简而言之,最好就用星型维度即可
当所有维表都直接连接到“ 事实表”上时,整个图解就像星星一样,故将该模型称为星型模型
星型架构是一种非正规化的结构,多维数据集的每一个维度都直接与事实表相连接,不存在渐变维度,所以数据有一定的冗余,如在地域维度表中,存在国家 A 省 B 的城市 C 以及国家 A 省 B 的城市 D 两条记录,那么国家 A 和省 B 的信息分别存储了两次,即存在冗余。
雪花模型
当有一个或多个维表没有直接连接到事实表上,而是通过其他维度表连接到事实表上时,其图解就像多个雪花连接在一起,故称雪花模型。
可以认为雪花模型是星型模型的一个扩展,每个维度表可以继续向外扩展,连接多个子维度。
当有一个或多个维表没有直接连接到事实表上,而是通过其他维表连接到事实表上时,其图解就像多个雪花连接在一起,故称雪花模型
星座模型
前面介绍的两种维度建模方法都是多维表对应单事实表,但在很多时候维度空间内的事实表不止一个,而一个维表也可能被多个事实表用到。在业务发展后期,绝大部分维度建模都采用的是星座模式。
可以认为是多个事实表的关联或者是星型模型的关联,其实到了业务发展后期都是星座模型
应用场景
维度建模是面向分析场景而生,针对分析场景构建数仓模型,重点关注快速、灵活的解决分析需求,同时能够提供大规模数据的快速响应性能。
针对性强,主要应用于数据仓库构建和OLAP引擎底层数据模型
雪花和星型模型,区别和优缺点
星型模型和雪花模型的主要区别在于对维度表的拆分
雪花模型,维度表的设计更加规范,一般符合3NF;
星型模型,一般采用降维的操作,利用冗余来避免模型过于复杂,提高易用性和分析效率。
了解olap oltp吗
OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。
OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。
联机事务处理OLTP(on-line transaction processing)
事务性非常高的系统,一般都是高可用的在线系统,以小的事务以及小的查询为主,评估其系统的时候,一般看其每秒执行的Transaction以及Execute SQL的数量。
- 实时性要求高
- 数据量不是很大
- 高并发,满足ACID
联机分析处理OLAP(On-Line Analytical Processing)
是数据仓库的核心部心,所谓数据仓库是对于大量已经由OLTP形成的数据的一种分析型的数据库,用于处理商业智能、决策支持等重要的决策信息;数据仓库是在数据库应用到一定程序之后而对历史数据的加工与分析,读取较多,更新较少,
怎么从mysql导入到hdfs
如果有一张亿别的表,怎么导入,哪些东西需要关注
需考虑内存大小
一段sql在hive里面怎么执行,完整的生命周期

- 进入CliDriver交互模式
- 读取命令processline ;进行分割
- 判断是否系统操作
- commandProcess 判断是否设置
- 判断是否为查询
- 编译
- 验证合法性
- 抽象为AST
- 翻译成逻辑操作数
- 生成物理执行计划
- 获取读写锁
- 执行execute
- 获取成功失败
- 清理中间临时文件
hive背后的引擎
mr和spark的区别
- MR是基于进程,spark是基于线程
- Spark的多个task跑在同一个进程上,这个进程会伴随spark应用程序的整个生命周期,即使没有作业进行,进程也是存在的
- MR的每一个task都是一个进程,当task完成时,进程也会结束
- 速度区别
- Application:初始化一个SparkContext即生成一个Application;
- Job:一个Action算子就会生成一个Job;
- Stage:Stage等于宽依赖(ShuffleDependency)的个数加1;
- Task:一个Stage阶段中,最后一个RDD的分区个数就是Task的个数。
[
](https://blog.csdn.net/qq_42564058/article/details/110825078)
mysql存储过程,优缺点有什么
存储过程是存储在数据库目录中的一段声明性SQL语句。 类似与函数
MySQL存储过程的优点
- 通常存储过程有助于提高应用程序的性能 在编译存储过程之后,MySQL将其放入缓存中。 MySQL为每个连接维护自己的存储过程高速缓存。 如果应用程序在单个连接中多次使用存储过程,则使用编译版本,否则存储过程的工作方式类似于查询。
- 存储过程有助于减少应用程序和数据库服务器之间的流量
- 存储的程序对任何应用程序都是可重用的和透明的。
- 存储的程序是安全的。 授予权限
MySQL存储过程的缺点
- 使用这些存储过程的每个连接的内存使用量将会大大增加。
- 很难调试存储过程
- 开发和维护存储过程并不容易。
了解mysql视图吗
- 重复利用SQL语句
- 简化SQL查询,快速取数据
- 只用知道表的部分结构
- 保护数据,根据特定授权
什么是事务?
ACID
- 原子性
- 一致性:事务始终保持系统处于一致的状态
- 隔离性
- 持久性
事务并发出现情况:
- 脏读
- 不可重复读
- 幻读
隔离级别:
进程:
- 程序的一次执行过程
- 程序在执行过程中的分配和管理资源的基本单位
- 每个进程都有自己的地址空间
线程:
- 线程是进程中的一部分
- 一个进程可以有多个线程,但线程只能存在于一个进程中
根本区别:进程是操作系统资源调度的基本单位,线程是任务的调度执行的基本单位
开销方面:进程都有自己的独立数据空间,程序之间的切换开销大;
线程也有自己的运行栈和程序计数器,线程间的切换开销较小。
进程的通信方式有哪些
修饰类、方法和变量,无法改变。
普通类和抽象类
- 普通类可被实例化,抽象类不可
- 抽象类被继承一定要实现其方法
java垃圾回收机制
如何定义是否为垃圾:
- 标记计数法 弊端:互相引用无法回收
- 可达性分析
垃圾回收算法
- 标记清楚
- 弊端:产生大量的空间碎片
- 标记整理
- 内存频繁变动
- 复制算法
- 分代收集
gc什么时候触发
所有new出来的对象都会放在 Eden 区,当 Eden 区空间不足时,JVM发起 Minor GC,Eden 区中未被回收的存活对象移入 S0,如 S0 空间不足时,则再次 Minor GC,将存活的对象移入 S1,将S0的对象清除(复制算法),并记录移入对象被GC的次数。下一次 Minor GC 时,S0 和 S1的职责互换,以此反复。直到存活对象被GC的次数超过15时,才会被移入老年代
老年代占据了堆内存中大部分的空间,只有在Major GC的时候才会进行清理,但每次GC时会”stop-the-world”,即其他线程都会被暂停。
