个人数仓开发面试题记录

一.广州电商公司

1.简单自我介绍
2.介绍下之前的公司离线数仓项目
3.mysql和hive区别?
4.sql的执行顺序?
5.hive的优化
6.说下你之前公司来,你的技能层次在每个公司?你怎么评价你的技能?
7.你的之前业务主要是做什么?我说了项目分工
8.数仓的分层,分几层?按照数据域分层,问几层?
9.sql优化一般怎么优化的?
10.非本专业怎么进行后续学习的?
11.系统函数怎么用的?
12.数据迁移怎么做的?
13.数据可视化界面怎么做的?bi你们讲解是谁负责
14.有用过dws层直接对接bi嘛?mysql数据库有用吗?为啥对接bi?

3.mysql和hive区别?

    hive不是数据库,除了sql语法有点像,其他都不一样
                   hive                                         mysql
 存储位置   hdfs                                         本地磁盘
 计算引擎   分布式mr、tez、spark             自己的单机的
 计算效率   数据量大,快                             小,快
 数据更新   适合分析(select)                   增删改查

5.hive的优化

group by

1)map端预聚合  (预聚合的配置参数为hive.map.aggr,默认值true)

2)数据倾斜时进行负载均衡处理

通过将参数hive.groupby.skewindata(默认false)设置为true,那么在进行group by时,会启动两个MR job。第一个job会将map端数据随机输入reducer,每个reducer做部分聚合操作,相同的group by key会分布在不同的reducer中。第二个job再将前面预处理过的数据按key聚合并输出结果,这样就起到了均衡的效果。

3)count(distinct)

当数据量大时,效率会很低,尤其是数据倾斜的时候。

可以通过group by代替count(distinct)使用。

4)本地模式

对于处理小数据量的任务,我们不需要通过集群模式进行处理(因为为该任务实际触发的job执行等开销可能比实际任务的执行时间还要长),Hive可以通过本地模式在单台机器上处理所有的任务。

 set hive.exec.mode.local.auto=true;

------------------------------------------------------------
2)map Join:  大小表join,避免shuffle
3)SMB Join:  sort merge bucket join
    大表 join 大表:
        分桶表,分桶字段 = 关联字段 = 桶排序 字段
        分桶的数量,成比例
4)分区、分桶
    分区:避免全表扫描
    分桶:做SMB的时候, 抽样key判断倾斜
5)压缩 : snappy
6)存储格式 : 列式 orc
    id  name    age
    1    zs     18
    2    ls     19
    
    行式   1    zs     18     2    ls     19
    列式   1    2     zs    ls    18    19
        查询效率高
        存储结构更紧密,压缩后更小
        select name from A
    
    行式: text、sequnencefile
    列式: orc、parquet
        orc为hive而生的,跟hive性能更强
        parquet兼容性更好
7)调整reduce的数量
    指定参数 ,默认 -1 表示禁用
    估算机制:   数据量/ 每个Reducer处理上限(默认256M)
    特殊语法: orderby 、 count(distinct )
    
    优先级: 特殊语法 > 参数 > 估算机制
8)谓词下推      默认开启
    select xx from  A join B  on A.id=B.id and A.id>10
    select xx from  A join B  on A.id=B.id where A.id>10
    经过谓词下推,第二种也会先 过滤,再join,效果一样
    
9)并行执行      默认开启
10)开启cbo      默认开启
11)合并小文件
    危害:
    解决:  
        JVM重用
        CombineHiveInputFormat
        merge功能: 结束后,再另外启动一个job来合并小文件于16m的文件
            小于 16m ==》 256m
            map-only:默认开启
            map-reduce:默认关闭,需要开启
            
12)使用多引擎
    mr    : 跑 年、月 时间跨度大、数据量大的指标
    tez   : 现在没用
    spark : 跑日常天指标
    
    set hive.execution.enginee = mr;
    sql1;
    
    set hive.execution.enginee=spark;
    sql2;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/719318.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux基础命令[10]-cmp

文章目录 1. cmp 命令说明2. cmp 命令语法3. cmp 命令示例3.1 不加参数3.2 -b(显示不同的字节)3.3 -i(跳过字节)3.4 -l(显示所有不同)3.5 -n(比较n个字节)3.6 -s(不显示信…

el-select 不能重复选择

el-select 不能重复选择&#xff0c;注意&#xff1a;删除后可以再次重新被选择 <el-form-item><el-select v-model"attribute.attributeSelect" change"changeSelect()" placeholder"请选择属性分组" clearable><el-optionv-fo…

PostgreSQL restartpoint 原理详解

背景 大部分人对 PG 的 checkpoint 机制会熟悉一点&#xff0c;但是对 restartpoint 却不太熟悉&#xff0c;网上介绍这方面的文章也比较少。因此&#xff0c;本文将以 PG 14.7 的社区代码为基础&#xff0c;介绍 PG 中的 restartpoint 机制。 原理介绍 什么是 restartpoint…

华为OD技术面试案例1-2024年

背景&#xff1a; 学校背景&#xff1a;211本科工作经验&#xff1a;1年半转行目标&#xff1a;测试岗位 一、机考 &#xff08;得分&#xff1a;350&#xff09; 二、01.04 hr面 自我介绍选择东莞的原因对OD&#xff08;华为研发岗位&#xff09;的看法家庭情况简历相关问…

信息论笔记:信息量+熵+相对熵+交叉熵+损失函数

信息论 信息量 I(x) -log( P )I为信息量P为x发生的概率 熵 混乱程度的度量&#xff0c;不确定的局面表示很混乱系统里信息量的期望值H(x) -sum( P(i) * log( P(i) ) ) 相对熵(KL散度) 用于度量两个概率分布间的差异性信息D_KL(S | O) sum( P_S(x) * log_2( 1 / P_O(x)…

Mysql学习之各种锁

锁 事务的隔离性由锁来实现 MySQL并发事务访问相同记录 并发事务访问相同记录的情况大致可以分为3种&#xff1a; 读-读的情况 读-读情况&#xff0c;即并发事务相继读取相同的记录。读取操作本身不会对记录由有任何的影响&#xff0c;并不会引起什么问题&#xff0c;所以允许…

简要讲解OV7725摄像头

本文主要包含以下几部分内容&#xff1a; 1. 通过OV7725分析模块原理图。 2. 讲解部分寄存器的含义、RGB565格式图像输出时序、帧率计算。 3. 讲解SCCB协议与I2C协议的区别。 1、OV7725功能 OV7725是一款1/4英寸单芯片图像传感器&#xff0c;其感光阵列达到640*480&#xff0c…

LibreOJ 137. 最小瓶颈路(加强版) 题解 Kruscal重构树 ST表

声明&#xff1a;本题目是LibreOJ 136. 最小瓶颈路 题解 最小生成树 倍增加强版&#xff0c;建议先学习简单版的做法。 题目链接&#xff1a;LibreOJ 137. 最小瓶颈路&#xff08;加强版&#xff09; 题目描述&#xff1a; 给定一张无向图&#xff0c;询问两个结点之间的最小瓶…

【MySQL 系列】在 Windows 上安装 MySQL

在 Windows 平台上安装 MySQL 很简单&#xff0c;并不需要太复杂的步骤。按照本文的步骤操练起来就可以了。 文章目录 1、下载 MySQL 安装程序2、安装 MySQL 数据库2.1、选择安装类型2.2、检查所需组件2.3、安装所选产品组件2.4、产品配置2.5、配置高可用性2.6、配置服务器类型…

【leetcode】 剑指 Offer学习计划(java版本含注释)(下)

目录 前言第十六天&#xff08;排序&#xff09;剑指 Offer 45. 把数组排成最小的数&#xff08;中等&#xff09;剑指 Offer 61. 扑克牌中的顺子&#xff08;简单&#xff09; 第十七天&#xff08;排序&#xff09;剑指 Offer 40. 最小的k个数&#xff08;简单&#xff09; 第…

c++11多线程:call_once

文章目录 call_once示例一示例二 call_once std::call_once是 C11 标准库中的一个函数&#xff0c;用于确保某个函数只会被调用一次。 单例设计模式是一种常见的设计模式&#xff0c;用于确保某个类只能创建一个实例。由于单例实例是全局唯一的&#xff0c;因此在多线程环境中…

YOLO系列中的“data.yaml”详解!

专栏介绍&#xff1a;YOLOv9改进系列 | 包含深度学习最新创新&#xff0c;主力高效涨点&#xff01;&#xff01;&#xff01; 一、data.yaml介绍 YOLO系列中的data.yaml文件包含了YOLO系列模型运行所需要的数据集路径、数据集中的类别数及标签。数据集路径可以用绝对路径也可以…

Python实现股票信息查询

目前两个常用的股票信息CPI&#xff1a; 腾讯行情CTPAPI接口源码 新浪行情CTPAPI 使用requests模块爬取股票信息&#xff0c;这里以查询股票市值为例。 一、根据股票名称查询股票代码 在python文件夹下设置两个表格GPLIST.xlsx&#xff0c;其中是A股全部代码和股票名称&#…

如何在飞书接入ChatGPT并结合内网穿透实现公网远程访问智能AI助手

文章目录 前言环境列表1.飞书设置2.克隆feishu-chatgpt项目3.配置config.yaml文件4.运行feishu-chatgpt项目5.安装cpolar内网穿透6.固定公网地址7.机器人权限配置8.创建版本9.创建测试企业10. 机器人测试 前言 在飞书中创建chatGPT机器人并且对话&#xff0c;在下面操作步骤中…

MySQL 高可用解决方案(双主双从)

1.环境说明 操作系统&#xff1a;centos7.7 主服务器&#xff1a;node2(192.168.1.102) 从服务器&#xff1a;node3(192.168.1.103) keepalived中虚拟ip(VIP):192.168.1.100 2.准备事项 主库和从库数据库的版本一致把主库的数据同步给从库一份 #对主库进行全局读锁定 FLUSH…

GEE代码条带问题——sentinel-1接缝处理的问题

问题 我有兴趣确定 NDVI 损失最大的年份。我创建了一个函数来收集所有陆地卫星图像并应用预处理。当我导出结果以识别 NDVI 损失最大年份时&#xff0c;生成的数据产品与陆地卫星场景足迹有可怕的接缝线。造成这种情况的原因是什么以及如何调整代码&#xff1f; sentinel1数据…

flutter之终极报错

看到这个报错头都大了 一开始在网上各种搜搜&#xff0c;然后有人说是flutter版本的问题&#xff0c;改完版本之后还是不对&#xff0c;又是各种搜搜搜 有人说是环境变量的问题&#xff0c;后来改了环境变量&#xff0c;妈的&#xff0c;竟然还不行&#xff0c;想砸电脑的心都…

Xcode :Could not build module ‘WebKit‘ 已验证解决

问题&#xff1a;Could not build module WebKit 具体报错如下&#xff1a; error: type argument nw_proxy_config_t (aka struct nw_proxy_config *) is neither an Objective-C object nor a block type property (nullable, nonatomic, copy) NSArray<nw_proxy_config_…

C++学习笔记:set和map

set和map set什么是setset的使用 关联式容器键值对 map什么是mapmap的使用map的插入方式常用功能map[] 的灵活使用 set 什么是set set是STL中一个底层为二叉搜索树来实现的容器 若要使用set需要包含头文件 #include<set>set中的元素具有唯一性(因此可以用set去重)若用…

【java-面试题】start和run的区别

【java-面试题】start和run的区别 在run方法内部&#xff0c;只是单纯的描述了该线程要执行的内容。run方法是线程的入口。 在start方法内部&#xff0c;会调用到系统api&#xff0c;从而在系统内核中创建出线程&#xff0c;创建线程后&#xff0c;再自动调用run方法。 在代码…