当前位置: 首页 > news >正文

hive面试题

1、什么是Hive
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能(HQL)

2、Hive的意义(最初研发的原因)
避免了去写MapReduce,提供快速开发的能力,减少开发人员的学习成本。

3、Hive的内部组成模块,作用分别是什么
1.元数据:Metastore
元数据包括:表名、表所属的数据库(默认是default)、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等;
默认存储在自带的derby数据库中,推荐使用MySQL存储Metastore 元数据存储
(1)解析器(SQL Parser):解析HQL语义
(2)编译器(Physical Plan):将HQL根据语义转换成MR程序
(3)优化器(Query Optimizer):对逻辑执行计划进行优化。(对MR程序进行优化)
(4)执行器(Execution):把任务提交到hadoop集群

4、Hive支持的数据格式
可支持Text,SequenceFile,ParquetFile,ORC格式RCFILE等

5、进入Hiveshell窗口的方式
1.hive
2. 启动服务 hiveserver2
beeline
! connect jdbc:hive2://主机名:10000

6、Hive数据库、表在HDFS上存储的路径是什么
/user/hive/warehouse

7、like与rlike的区别
like的内容不是正则,而是通配符。
rlike的内容可以是正则,正则写法与Java一样。

8、内部表与外部表的区别
删除内部表会直接删除元数据(metadata)及存储数据;
删除外部表仅仅会删除元数据,HDFS上的文件并不会被删除;

9、分区表的优点是,分区字段的要求是
1.提高特定(指定分区)查询分析的效率
2.分区字段的要求:分区字段不能出现在表中已有的字段内

10、分桶表的优点是,分桶字段的要求是
1.使取样(sampling)和join 更高效
2.分桶字段的要求:分桶字段必须是表中已有的字段

11、数据导入表的方式 有5种方式
1、直接向分区表中插入数据
2、通过查询插入数据
3、多插入模式
4、查询语句中创建表并加载数据
5、创建表时通过location指定加载数据路径

12、数据导出表的方式
有7种方式
1 将查询的结果导出到本地
2 将查询的结果格式化导出到本地
4、Hadoop命令导出到本地
5、hive shell 命令导出
3、将查询的结果导出到HDFS上(没有local)
6、export导出到HDFS上
7、sqoop 导出数据(后面单独学)

13、order by与sort by的区别
order by 是全局排序,一个MapReduce,而 sort by 是局部分区内部进行排序

14、where 与 having的区别
1.where是作用在表的所有字段,having是作用在查询的字段上。
2.在where子句中不能使用聚组函数,在having语句中可以使用聚组函数

15、distribute by何时使用,通常与哪个联合使用
按照指定的字段进行分区时,对数据进行分区时使用
通常和sort by联合使用,Hive要求distribute by语句要写在sort by语句之前

16、Cluster by何时使用
要根据某个字段进行分区,并且以这个字段进行排序时使用Cluster by

17、distribute by+sort by(相同字段) 与Cluster by的区别
cluster by 的结果有限制,只能正序排列,而 distribute by+sort by 可根据需求进行排序

18、hive -e/-f/-hiveconf分别是什么意思
hive -e 后面的参数是‘命令行’
hive -f 后面的参数是文件
hive -hiveconf 设置hive运行时候的参数配置

19、hive声明参数有哪些方式,优先级是什么
配置文件(配置文件参数)
hive -hiveconf (命令行参数)
在hive的shell窗口set(参数声明)
优先级:参数声明>命令行参数>配置文件参数

20、编写hiveUDF代码,方法名称叫什么
evaluate

21、企业中hive常用的数据存储格式是什么?常用的数据压缩格式是什么?
在实际的项目开发当中,hive表的数据存储格式一般选择:orc或parquet。压缩方式一般选择snappy。

22、hive自定义函数的类型
1.UDF(User-Defined-Function) 一进一出
2.UDAF(User- Defined Aggregation Funcation) 聚集函数,多进一出。Count/max/min
3.UDTF(User-Defined Table-Generating Functions) 一进多出,如lateral view explore)

23、Fetch抓取中
设置more有什么效果
执行某些查询语句,不会执行mapreduce程序
设置none有什么效果
执行查询语句,所有的查询都会执行mapreduce程序

24、本地模式有什么好处
在数据量较小时,提高查询效率
原因:查询数据的程序运行在提交查询语句的节点上运行(不提交到集群上运行),

25、当一个key数据过大导致数据倾斜时,如何处理
当发生数据倾斜时,使用局部聚和可以起到性能调优的效果(在Map端进行聚合)
当发生倾斜时,查询语句会转化成至少两个MR程序,第一个程序进行局部聚和,第二个MR程序进行最终聚和。

26、Count(distinct) 的替换语句如何编写
使用嵌套查询
例:select count(distinct id) from score;
转|换
select count(id) from (select id from score group by id) a;

27、如何使用分区剪裁、列剪裁
什么是分区剪裁:需要哪个分区,就获取哪个分区的数据
什么是列剪裁:需要哪个列,就获取哪个列的数据

28、如何理解动态分区调整
以第一个表的分区规则,来对应第二个表的分区规则,将第一个表的所有分区,全部拷贝到第二个表中来,第二个表在加载数据的时候,不需要指定分区了,直接用第一个表的分区即可

29、数据倾斜时,如何将众多数据写入10个文件
1.设置reduce数量10,使用id,对id进行分区distribute by
2.设置reduce数量10,然后使用 distribute by rand()
rand字段为随机数 ,从而随机的将数据写入到文件中

30、reduce数量的计算是什么
决定reduce数量的因素,
参数1:每个Reduce处理的最大数据量
参数2:每个任务最大的reduce数
计算reducer数的公式 N=min(参数2,总输入数据量/参数1)

31、并行执行有什么好处
在没有依赖的前提下,开启并行执行(多任务多阶段同时执行),从而起到优化执行效率的作用

32、严格模式不能执行哪些命令
1、用户不允许扫描所有分区
2、使用了order by语句的查询,要求必须使用limit语句
3、限制笛卡尔积的查询

33、JVM重用有什么好处
重复利用JVM,以减少JVM开启和关闭的次数,减少任务开销,提高效率

34、什么是MR本地计算
数据存储后,计算这批数据的程序已经写完,程序在进行分发时,优先将程序分发到程序所用到数据所在的节点。

35、先join后过滤的优化方案
先过滤后关联(join)
例如:SELECT a.id FROM bigtable a LEFT JOIN ori b ON a.id = b.id WHERE b.id <= 10;
优化方案:
1、SELECT a.id FROM ori LEFT JOIN bigtable b ON (b.id <= 10 AND a.id = b.id);
2、SELECT a.id FROM bigtable a RIGHT JOIN (SELECT id FROM ori WHERE id <= 10 ) b ON a.id = b.id;

36、影响Map数量的因素
当文件大小很小时,影响map的数量的因素是文件的个数
当文件大小很大时,影响map的数量的因素是数据块的数量

37、什么是MR本地模式
任务提交时,运行在提交HQl 所在的节点,不提交到集群。(本地计算提交到集群。本地模式不提交到集群)

相关文章:

hive面试题

1、什么是Hive Hive是基于Hadoop的一个数据仓库工具&#xff0c;可以将结构化的数据文件映射为一张数据库表&#xff0c;并提供类SQL查询功能&#xff08;HQL&#xff09; 2、Hive的意义&#xff08;最初研发的原因&#xff09; 避免了去写MapReduce&#xff0c;提供快速开发的…...

【CUDA】《CUDA编程:基础与实践》CUDA加速的关键因素

CUDA事件计时 CUDA提供了一种基于CUDA事件(CUDA event)的计时方式&#xff0c;可用来给一段CUDA代码(可能包含主机代码和设备代码)计时。 对计时器的封装&#xff1a; class CUDATimeCost { public:void start() {elapsed_time_ 0.0;// 初始化cudaEventcheckCudaRuntime(cud…...

数据结构【Golang实现】(四)——双向循环链表

目录0. 定义节点1. IsEmpty()2. Length()3. AddFromHead()4. AddFromTail()5. Insert()6. DeleteHead()7. DeleteTail()8. Remove()9. RemoveByValue()10. Contain()11. Traverse()0. 定义节点 type DLNode struct {Data anyPrev, Next *DLNode }// DoublyLoopLinkedLis…...

【Redis】高可用架构之哨兵模式 - Sentinel

Redis 高可用架构之哨兵模式 - Sentinel1. 前言2. Redis Sentinel 哨兵集群搭建2.1 一主两从2.2 三个哨兵3. Redis Sentinel 原理剖析3.1 什么哨兵模式3.2 哨兵机制的主要任务3.2.1 监控&#xff08;1&#xff09;每1s发送一次 PING 命令&#xff08;2&#xff09;PING 命令的回…...

图片的美白与美化

博主简介 博主是一名大二学生&#xff0c;主攻人工智能研究。感谢让我们在CSDN相遇&#xff0c;博主致力于在这里分享关于人工智能&#xff0c;c&#xff0c;Python&#xff0c;爬虫等方面知识的分享。 如果有需要的小伙伴可以关注博主&#xff0c;博主会继续更新的&#xff0c…...

面试官:关于CPU你了解多少?

CPU是如何执行程序的&#xff1f; 程序执行的基本过程 第一步&#xff0c;CPU 读取「程序计数器」的值&#xff0c;这个值是指令的内存地址&#xff0c;然后 CPU 的「控制单元」操作「地址总线」指定需要访问的内存地址&#xff0c;接着通知内存设备准备数据&#xff0c;数据准…...

UI自动化测试-Selenium的使用

文章目录 1. 环境搭建1.1 入门示例1.2 元素操作常用方法1.3 浏览器操作常用方法1.4 获取元素信息常用方法1.5 鼠标操作常用方法1.6 键盘操作常用方法1.7 下拉选择框操作2. 元素定位2.1 id定位2.2 name定位2.3 class_name定位2.4 tag_name定位2.5 link_text定位2.6 partail_link…...

嵌入式学习笔记——STM32的USART相关寄存器介绍及其配置

文章目录前言USART的相关寄存器介绍状态寄存器&#xff1a;USARTX->SR具体位代表的含义实际代码数据寄存器 USARTX->DR波特率寄存器 USARTX->BRR控制寄存器 (USART_CR)控制寄存器1&#xff08;USART_CR1&#xff09;控制寄存器2&#xff08;USART_CR2&#xff09;GPIO…...

Android setContentView流程分析(一)

对于做Android App的小伙伴来说setContentView这个方法再熟悉不过了&#xff0c;那么有多少小伙伴知道它的调用到底做了多少事情呢&#xff1f;下面就让我们来看看它背后的故事吧&#xff1f; setContentView()方法将分为两节来讲&#xff1a;   第一节&#xff1a;如何获取De…...

doris数据库操作数字遇到的问题

关于doris数据库Apache Doris 是一个基于 MPP 架构的高性能、实时的分析型数据库&#xff0c;以极速易用的特点被人们所熟知&#xff0c;仅需亚秒级响应时间即可返回海量数据下的查询结果&#xff0c;不仅可以支持高并发的点查询场景&#xff0c;也能支持高吞吐的复杂分析场景。…...

3.13文件的IO操作

一.文件1.定义文件一般指的是存储在硬盘上的普通文件形如:txt.jpg.mp4,rar等这些文件在计算机中,文件可能是一个广义的概念,不仅可以包含普通文件,还可以包含目录(也就是文件夹.把目录称为目录文件)在操作系统中,还会用文件来描述一些其他的硬件设备或者软件资源比如网卡,显示器…...

ffmpeg使用

1 下载FFmpeg安装 官网地址&#xff1a;https://www.ffmpeg.org/download.html#build-windows 进入网址&#xff0c;点击下面红框部分 点击下面范围进行下载&#xff0c;下载速度有点慢&#xff0c;等等吧&#xff01; 下载成功后&#xff0c;解压后&#xff0c;复制bin的路…...

spark中的并行度(分区数)/分区器如何确定

源头RDD有自己的分区计算逻辑&#xff0c;一般没有分区器,并行度是根据分区算法自动计算的&#xff0c;RDD的compute函数中记录了数据如何而来&#xff0c;如何分区的hadoopRDD&#xff0c;根据XxxinputFormat.getInputSplits()来决定&#xff0c;比如默认的TextInputFormat将文…...

00后女生“云摆摊”两周赚1.5万,实体店转战线上真的能赚钱吗?

最近&#xff0c;山东临沂的00后女生利用小程序在线上“云摆摊”卖水果&#xff0c;两周赚1.5万&#xff0c;引发网友热议。不少人发出质疑的声音&#xff1a;年轻人不要有稳定的工作不做&#xff0c;去摆摊&#xff1b;网上开店成本低&#xff0c;开实体店结果就难说了&#x…...

华为OD机试题 - 最优资源分配(JavaScript)| 机考必刷

更多题库,搜索引擎搜 梦想橡皮擦华为OD 👑👑👑 更多华为OD题库,搜 梦想橡皮擦 华为OD 👑👑👑 更多华为机考题库,搜 梦想橡皮擦华为OD 👑👑👑 华为OD机试题 最近更新的博客使用说明本篇题解:最优资源分配题目输入输出描述备注示例一输入输出说明示例二输入…...

利用python判断字符串是否为回文

1 问题 如何用python判断字符串是否为回文。 2 方法 用两个变量left&#xff0c;right模仿指针&#xff08;一个指向第一个字符&#xff0c;一个指向最后一个字符&#xff09;&#xff0c;每比对成功一次&#xff0c;left向右移动一位&#xff0c;right向左移动一位&#xff0c…...

GDB 调用之ptype、set variable

今天在公司的时候&#xff0c;排查一个问题&#xff0c;创建l3 lif 失败&#xff0c;查看各种日志发现是用key去创建的 lif失败了&#xff0c;日志里指示key为空&#xff0c;导致的创建失败。原因为一个结构体比基线的多了一些东西&#xff0c;导致版本不对&#xff0c;既而计算…...

并发编程---阻塞队列(五)

阻塞队列一 阻塞队列1.1.阻塞队列概念1.2.阻塞队列API案例1.2.1. ArrayBlockingQueue1.2.1.1.抛出异常1.2.1.2.返回布尔1.2.1.3.阻塞1.2.1.4.超时1.2.2.SynchronousQueue二 阻塞队列应用---生产者消费者2.1.传统模式案例代码结果案例问题---防止虚假唤醒2.2.⽣产者消费者防⽌虚…...

本科课程【计算机组成原理】实验1 - 输出ABCD程序的生成

大家好,我是【1+1=王】, 热爱java的计算机(人工智能)渣硕研究生在读。 如果你也对java、人工智能等技术感兴趣,欢迎关注,抱团交流进大厂!!! Good better best, never let it rest, until good is better, and better best. 近期会把自己本科阶段的一些课程设计、实验报…...

Java并发编程(2) —— 线程创建的方式与原理

一、Java线程创建的三种方式 1. 继承Thread类并重写run()方法 ///方法一&#xff1a;使用匿名内部类重写Thread的run()方法Thread t1 new Thread() {Overridepublic void run() {try {sleep(10000);} catch (InterruptedException e) {e.printStackTrace();}log.debug("…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称&#xff1a;Apache Flink REST API 任意文件读取漏洞CVE编号&#xff1a;CVE-2020-17519CVSS评分&#xff1a;7.5影响版本&#xff1a;Apache Flink 1.11.0、1.11.1、1.11.2修复版本&#xff1a;≥ 1.11.3 或 ≥ 1.12.0漏洞类型&#xff1a;路径遍历&#x…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用

一、方案背景​ 在现代生产与生活场景中&#xff0c;如工厂高危作业区、医院手术室、公共场景等&#xff0c;人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式&#xff0c;存在效率低、覆盖面不足、判断主观性强等问题&#xff0c;难以满足对人员打手机行为精…...

从面试角度回答Android中ContentProvider启动原理

Android中ContentProvider原理的面试角度解析&#xff0c;分为​​已启动​​和​​未启动​​两种场景&#xff1a; 一、ContentProvider已启动的情况 1. ​​核心流程​​ ​​触发条件​​&#xff1a;当其他组件&#xff08;如Activity、Service&#xff09;通过ContentR…...