Oppo面经
Oppo面经
- udf和udtf,udaf的区别,常见sql方法
UDF:用户定义(普通)函数,只对单行数值产生作用
UDAF:用户定义聚合函数,可对多行数据产生作用;等同与SQL中常用的SUM(),AVG(),也是聚合函数 多进一出
UDTF:用户定义表生成函数,用来解决输入一行输出多行 - hive中sql中表连接方式,如何广播小表,在sql中怎么体现?
- 怎么写行转列,列转行?
列转行
select name,mo,time from people_movie lateral view explode(movie) movie as mo,time; 把一列炸开成多行
-
A ABC 2016-05
-
A EFG 2016-09
-
B OPQ 2015-06
-
B XYZ 2016-04
-
A ABC 2016-05
行转列
> select t1.base, concat_ws('|', collect_set(t1.name)) name
From
(select name, concat(constellation, "," , blood_type) base
from person_info) t1
group by t1.base
- Hive中的常见窗口函数
row_number():从1开始,按照顺序,生成分组内记录的序列,row_number()的值不会存在重复,当排序的值相同时,按照表中记录的顺序进行排列; 1,2,3,4,5
rank():生成数据项在分组中的排名,排名相等会在名次中留下空位。1,2,3,3,5
dense_rank():生成数据项在分组中的排名,排名相等会在名次中不会留下空位。1,2,3,3,4
LEAD(col,n,DEFAULT) 用于统计窗口内往下第n行值
LAG(col,n,DEFAULT) 用于统计窗口内往上第n行值
-
数仓怎么搭建的
-
数据是怎么导入数仓的
-
Mysql索引为什么这么高效?
-
什么是组合索引?怎么用的?最左匹配原则?
-
Kafka消息积压怎么处理
-
Spark和MR的区别
-
Spark中的shuffle过程
-
Hadoop中的MR流程描述一下
-
Hadoop数据存储的方式有哪些?ORC和parquet的区别?
Parquet 支持嵌套式结构,ORC 多层嵌套比较复杂,Parquet 不支持ACID,ORC 支持ACID特性
Parquet不支持增删等操作,ORC支持增删等操作。ORC作为存储,可以借助元数据过滤掉更多不需要的数据,查询时需要的集群资源比Parquet更少
-
Hive Sql语句中怎么写广播器?(广播小表连接大表)
-
数据倾斜的处理方式?
-
Linux中如何统计文件中字母出现的个数
grep -o "hello" demo.log | wc -l
-
Shell脚本如何写?
-
星型模型和雪花模型的区别及应用场景
星型模式是以事实表为中心,所有的维度表直接连接在事实表上,像星星一样。 星形模式的维度建模由一个事实表和一组维表。
雪花模式(Snowflake Schema)是对星形模式的扩展。雪花模式的维度表可以拥有其他维度表的,但是由于这种模型不太容易理解,维护成本比较高,而且性能方面需要关联多层维表,性能比星型模型要低。
从现在项目中看 大部分 Fact 和 Dimnsn 的关联关系都是 星型的 ,有很少量的是采用了雪花型的 。
至于什么模式适用什么场景很难有一个可靠的规则去决定,主要裁决与模型的运行效率 和 BA 的经验。以及现行的趋势