zoukankan      html  css  js  c++  java
  • 数仓interview总结

    一 数据库

    1.1 数据库事务特性ACID

    原子性Atomicity,一致性Consistency,隔离性Isolation,持续性Durability

    1.2 锁有几种,及范围

    从数据库系统角度分为三种:排他锁、共享锁、更新锁。按作用范围划分为:行锁、表锁。

    S锁,也叫读锁,用于所有的只读数据操作。共享锁是非独占的,允许多个并发事务读取其锁定的资源。

    X锁,也叫写锁,表示对数据进行写操作。如果一个事务对对象加了排他锁,其他事务就不能再给它加任何锁了。

    U锁,在修改操作的初始化阶段用来锁定可能要被修改的资源,这样可以避免使用共享锁造成的死锁现象。

    1.3 分区,索引有那些

    范围分区(时间),列表分区(值很少的数据),hash分区

    索引链接:http://www.cnblogs.com/sessionbest/articles/8689255.html

    1.4 数据表的关联有几种(在优化器)

    NESTED LOOP,HASH JOIN,SORT MERGE JOIN

    1.5 数据库调优(主要sql优化思路)

    • 数据模型优化
    • 数据裁剪,减少每个阶段的数据量  (where分区裁剪,select列裁剪,join关联使用相同的key)
    • 减少JOB数(map:input文件总大小,文件个数,集群文件块block大小;reduce:reduce个数=inputfilesize / bytes per reduce,reduce任务处理的数据量,默认为1G)
    • 数据倾斜(空值,赋予空值新的key值;不同数据类型关联;mapjoin,当小表与大表JOIN时,采用mapjoin,即在map端完成,大表放最后可避免小表与大表JOIN产生的数据倾斜,有效减少内存溢出)
    • 参数设置(本地local模式,并行执行,动态分区,map端聚合,小文件合并(小文件归档archive,重建表))

    1.6 如何解决数据分布不均和数据重分布的问题

    1.7 大表UPDATE,DELETE的方法

    二 数据仓库

    2.1 数据仓库架构,以及主题

    数据分层:数据源层,主题层,基础汇总层,应用层

    主题:用户,商品,商家,流量,订单,营销,供应链,配送,仓储,售后,财务
    2.2 数据仓库建模方法

    范式建模(3NF),维度建模(星形、雪花),实体建模(关系)

    2.3 数据治理

    数据治理包含:主数据管理,生命周期管理,业务流程管理,数据质量,数据安全,元数据

    数据质量方法:

    数据监控:准确性(行数和数量),及时性(设置完成时间)

    数据清洗:清洗脏数据,标准化

    错误预警:校验(0值,环比)

    数据分析,发现及推动主数据

     2.4 mapreduce工作原理
    Map阶段
        第一步: 通过FileInputFormat读取文件, 把输入文件按照一定的标准分片 (InputSplit),每个输入片的大小是固定的
        第二步: 自定义Map逻辑, 对输入片中的记录按照一定的规则解析每对<key,value>,生成中间结果
    Shuffle阶段
        第三步: 对<key,value>进行分区,分区是基于key进行的
        第四步: 对每个分区内的数据按照相同的key进行排序
        第五步: 分组后的数据进行规约(combine操作),降低数据的网络拷贝(可选步骤)
        第六步: 对排序后的数据, 将相同的key的value数据放入一个集合中
    Reduce阶段
        第七步: 对多个map的任务进行合并、排序. 自定义reduce逻辑,处理<key,value>进行输出
        第八步: 通过FileOutputFormat输出处理后的数据, 保存到文件

     2.5 谈谈调度机制,数据标准,元数据管理,以及实时数据技术

    调度架构分为:NameNode,TaskNode,WEB管理,日志收集器

    NameNode负责任务实例化、检查依赖、分配任务执行节点、处理任务执行结果、管理TaskNode节点;

    TaskNode主动从NameNode按照一定的分配策略领取任务,并根据任务执行代理器,会监听进程执行结果并反馈给NameNode,同时接收任务日志输出到日志收集器

    技术点包含:实例(任务到预定的执行时间时,会根据任务的配置,生成一个任务实例)

    分配策略(轮询,并发数,机器资源)

    跨周期依赖,数据依赖

  • 相关阅读:
    js根据年份获取某月份有几天
    java 时间转换去杠
    简单Maven Dos命令语句
    Maven命令参数
    Redis学习推荐
    Java中Redis缓存
    oracle新建登录用户sql语句
    ORacle修改表列长度
    jsp利用application统计在线人数的方法
    Oracle之分页查询
  • 原文地址:https://www.cnblogs.com/zzjhn/p/10535360.html
Copyright © 2011-2022 走看看