大数据得Hive面试题

2. Hive和数据库比较

Hive和数据库除了拥有类似的查询语言,再无类似之处

  • 数据存储位置

    • Hive存储在HDFS上,数据库将数据保存在块设备或者本地文件系统中

  • 数据更新

    • Hive默认不支持update,delete操作,需要开始事务配置。一般场景不建议使用跟新。mysql支持更新删除操作。如果在hive中需要update。可以insert into 新表 select 字段1,字段2,if(更新条件,返回,否则返回)from 旧表

  • 执行延迟

    • Hive执行延迟较高,数据库的执行延迟较低。这个是有条件的,在数据规模较小时,在数据规模大到超过数据库的处理能力的时候,Hive的并行计算显然能体现出优势。

  • 数据规模

    • Hive支持很大规模的数据计算,数据库可以支持的数据规模较小。

  • SQL语法区别: 1 hive不支持where后面跟子查询。 2 hive支持建表分区操作,mysql不支持。 3 group by。hive中sql,select 中的维度字段,必须出现在group by 后面。mysql语法可以不用。 省份,城市,确诊病例 select pro,city,sum(quezhen) s from t group by pro,city 4 sort by,distribute by,group by 5 mapjoin ,mysql没有。

3. 内部表和外部表

内部表和外部表的区别在于元数据和原始数据

  • 删除数据时:

    • 内部表:元数据和原始数据全部删除

    • 外部表:只删除元数据

  • 在公司生产环境下,什么时候创建内部表,什么时候创建外部表?

    • 在公司中绝大多数场景都是创建外部表

    • 自己使用的临时表,才会创建内部表

4. 4个By的区别

在生产环境中order by用的较少,容易导致OOM

在生产环境中sort by+distribute by用的多

  • order by:全局排序,只有一个reduce

  • sort by:分区内有序

  • distribute by:类似于MR中partition,进行分区,结合sort by使用

  • cluster by:当distribute by和sort by字段相同的时候,可以使用cluster by方式。cluster by除了具有distribute by的功能外还兼具了sort by的功能。但是排序只能是升序排序,不能指定排序规则为ASC或者DESC。

5.系统函数

  • date_add、date_sub函数(加减日期)

  • next_day函数(周指标相关)

  • date_format函数(根据格式整理日期)

  • last_day函数(求当月最后一天日期)

  • collect_set函数

  • get_json_object解析json函数

  • NVL(表达式1,表达式2)

    • 如果表达式1为空值,NVL返回值为表达式2的值,否则返回表达式1的值。

6.自定义UDF、UDTF函数

  • 在项目中是否自定义过UDF、UDTF函数,以及用他们处理了什么问题,及自定义步骤?

    • 用UDF函数解析公共字段,用UDTF函数解析事件字段

    • 自定义UDF:继承UDF,重写evaluate方法

    • 自定义UDTF:继承自GenericUDTF,重写3个方法:initialize(自定义输出的列名和类型),process(将结果返回forward(result)),close

  • 为什么要定义UDF、UDTF?

    • 因为自定义函数,可以自己埋点Log打印日志,出错或者数据异常,方便调试

    • 有些需求SQL无法直接处理,可以使用代码辅助解决

7.窗口函数

  • Rank

    • Rank()排序相同时会重复,总数不会变

      • rank() over(partiition by regionX order by nameX desc) as tn

      • 1 93;2 90;2 90;4 89 排名不是连续的,相同的分数是同名次,前 100 名只有 100 个

    • dense_rank()排序相同时会重复,总数会减少

      • dense_rank() over()

      • 1 93;2 90;2 90;3 89 排名是连续的,相同的分数是同名次,前 100 名可能多于 100 个

    • row_number()会根据顺序计算

      • row_number() over(partition by regionX order by nameX desc) as tn

      • 1 93;2 90;3 90 排名是连续的,相同的分数会有排名先后,前 100 名只有 100 个

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ky75249

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值