Oppo面经

2022-03-23  本文已影响0人  那就这样吧丶xx

Oppo面经

  1. udf和udtf,udaf的区别,常见sql方法
    UDF:用户定义(普通)函数,只对单行数值产生作用
    UDAF:用户定义聚合函数,可对多行数据产生作用;等同与SQL中常用的SUM(),AVG(),也是聚合函数 多进一出
    UDTF:用户定义表生成函数,用来解决输入一行输出多行
  2. hive中sql中表连接方式,如何广播小表,在sql中怎么体现?
  3. 怎么写行转列,列转行?

列转行

select name,mo,time from people_movie lateral view explode(movie) movie as mo,time; 把一列炸开成多行

  1. A ABC 2016-05

  2. A EFG 2016-09

  3. B OPQ 2015-06

  4. B XYZ 2016-04

  5. 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

  1. 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行值

  1. 数仓怎么搭建的

  2. 数据是怎么导入数仓的

  3. Mysql索引为什么这么高效?

  4. 什么是组合索引?怎么用的?最左匹配原则?

  5. Kafka消息积压怎么处理

  6. Spark和MR的区别

  7. Spark中的shuffle过程

  8. Hadoop中的MR流程描述一下

  9. Hadoop数据存储的方式有哪些?ORC和parquet的区别?

Parquet 支持嵌套式结构,ORC 多层嵌套比较复杂,Parquet 不支持ACID,ORC 支持ACID特性

Parquet不支持增删等操作,ORC支持增删等操作。ORC作为存储,可以借助元数据过滤掉更多不需要的数据,查询时需要的集群资源比Parquet更少

  1. Hive Sql语句中怎么写广播器?(广播小表连接大表)

  2. 数据倾斜的处理方式?

  3. Linux中如何统计文件中字母出现的个数

grep -o "hello" demo.log | wc -l

  1. Shell脚本如何写?

  2. 星型模型和雪花模型的区别及应用场景

星型模式是以事实表为中心,所有的维度表直接连接在事实表上,像星星一样。 星形模式的维度建模由一个事实表和一组维表。

雪花模式(Snowflake Schema)是对星形模式的扩展。雪花模式的维度表可以拥有其他维度表的,但是由于这种模型不太容易理解,维护成本比较高,而且性能方面需要关联多层维表,性能比星型模型要低。

从现在项目中看 大部分 Fact 和 Dimnsn 的关联关系都是 星型的 ,有很少量的是采用了雪花型的 。

至于什么模式适用什么场景很难有一个可靠的规则去决定,主要裁决与模型的运行效率 和 BA 的经验。以及现行的趋势

上一篇下一篇

猜你喜欢

热点阅读