大数据面试-Hive

Hive 架构

在这里插入图片描述

Hive SQL执行流程

(1)解析器(SQLParser):将 SQL 字符串转换成抽象语法树(AST)
(2)语义分析器(Semantic Analyzer):将 AST 进一步抽象为 QueryBlock(可以理解为一个子查询划分成一个 QueryBlock)
(2)逻辑计划生成器(Logical Plan Gen):由 QueryBlock 生成逻辑计划
(3)逻辑优化器(Logical Optimizer):对逻辑计划进行优化
(4)物理计划生成器(Physical Plan Gen):根据优化后的逻辑计划生成物理计划
(5)物理优化器(Physical Optimizer):对物理计划进行优化
(6)执行器(Execution):执行该计划,得到查询结果并返回给客户端
在这里插入图片描述
在这里插入图片描述

char和varchar的区别

(1)char类型的长度是固定的,不足的部分用隐藏空格填充,varchar的长度是可变的。这就表示,存储字符串’abc’,使用char(10),表示存储的字符将占10个字节(包括7个空字符);使用varchar(10),则表示只占3个字节,10是最大值,当存储的字符小于10时,按照实际的长度存储。
(2)char最大长度是255字符;varchar最大长度是65535个字节。
(3)存储效率上:char即使字符串较短也占用完整的 n 个字符的存储空间,有可能浪费存储。varchar:仅占用实际字符串长度的存储空间,更加节省。
(4)char类型的效率比varchar的效率稍高。
(5)使用 char 类型来存储固定长度的字符串,以便于优化存储和查询效率。使用 varchar 类型来存储长度可变的字符串,以节省存储空间并提高灵活性。

说一下UDF、UDAF、UDTF的区别?

‌UDF(User-Defined Functions)‌:
UDF(User-defined functions)用户自定义函数,简单说就是输入一行输出一行的自定义算子。是大多数 SQL 环境的关键特性,用于扩展系统的内置功能。(一对一)
UDF主要用于处理单个行的数据,将一行输入映射到一行输出。它们通常用于对单个列或多个列进行转换和计算,如计算平方根、字符串拼接、日期格式转换等操作。UDF可以接受零个或多个输入参数,并返回一个值。它们是Hive中最基本的自定义函数类型,适用于简单的数据转换、格式化和计算操作,尤其是在需要对列数据进行逐行处理时。
UDAF(User-Defined Aggregate Functions)‌:
UDAF用于聚合数据,通常在GROUP BY子句中使用,将多行数据聚合成单个值。它们接受多行数据作为输入,返回单个聚合值,如计算平均值、求和、最大值、最小值等。UDAF可以与GROUP BY一起使用,也可以不使用,允许用户对数据进行分组聚合操作。它们允许用户在查询中汇总数据并生成一个单一的聚合结果。
UDTF(User-Defined Table-Generating Functions)‌:
UDTF(User-Defined Table-Generating Functions),用户自定义生成函数。它就是输入一行输出多行的自定义算子,可输出多行多列,又被称为 “表生成函数”。(一对多)
UDTF用于生成多行数据,通常在查询中用于拆分、解析或转换数据,并生成多个输出行。它们接受输入参数,并生成一个或多个输出表格,每个表格包含多行数据。例如,将文本数据拆分成多行、将JSON数据展开为多个行等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

文文鑫

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

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

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

打赏作者

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

抵扣说明:

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

余额充值