首页 > 其他分享 >Hive重要知识点及面试题

Hive重要知识点及面试题

时间:2022-09-07 19:47:52浏览次数:97  
标签:知识点 面试题 差别 数据库 Hive hive 数据 分区

知识点:

Hive是数据仓库建模工具之一。

传统的关系数据库具有结构化程度高、独立性强、冗余度低,主要是操作型数据库和分析型数据库。

其中操作型数据库:主要用于业务支撑。一个公司往往会使用并维护若干个操作型数据库,这些数据库保存着公司的日常操作数据,比如商品购买、酒店预订、学生成绩录入等。

分析型数据库:主要用于历史数据分析。这类数据库作为公司的单独数据存储,负责利用历史数据对公司各主题域进行统计分析。

差别:数据组成差别 - 数据时间范围差别,数据组成差别 - 数据细节层次差别,数据组成差别 - 数据时间表示差别,技术差别 - 查询数据总量和查询频度差别,技术差别 - 数据更新差别,技术差别 - 数据冗余差别,功能差别 - 数据读者差别,功能差别 - 数据定位差别。

数据仓库就是为了解决数据库不能解决的问题而提出的。那么数据库无法解决什么样的问题呢?这个我们得先说说什么是OLAP和OLTP。

OLTP即对数据库的增删改查,速度快,数据内容不会特别大,事务的精准性特别高。

OLAP即对事务处理时对其要从多个维度进行分析,传统的数据库无法满足。

比尔 恩门对数据仓库的定义为数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理中的决策制定。

数据仓库的特点:面向主题、集成性、企业范围、历史性、时变性。

 Hive实现map-reduce任务:

 Hive特点:1、可扩展性 2、延申性 3、容错

hive和传统数据库对比:

hive架构:

 

分区的目的:使查询范围变小,避免了全表扫描,加快了查询速率。

静态分区需要注意将相应的分区字段分批次导入。

静态分区与动态分区的主要区别在于静态分区是手动指定,而动态分区是通过数据来进行判断。详细来说,静态分区的列是在编译时期通过用户传递来决定的;动态分区只有在SQL执行时才能决定

数据分桶原理:Hive采用对列值哈希,然后除以桶的个数求余的方式决定该条记录存放在哪个桶当中。

分桶优势:方便抽样,提高join查询效率

分桶表和分区表插入数据有所区别,分区表需要select 和指定分区,而分桶则不需要

hive语句的执行顺序:

1.from

2.join on 或 lateral view explode(需炸裂的列) tbl as 炸裂后的列名

3.where

4.group by

5.聚合函数 如Sum() avg() count(1)等

6.having 在此开始可以使用select中的别名

7.select 若包含over()开窗函数,此时select中的内容作为窗口函数的输入,窗口中所选的数据范围也是在group by,having之后,并不是针对where后的数据进行开窗,这点要注意。需要注意开窗函数的执行顺序及时间点。

8.distinct

9.order by

10.limit

 

面试题:

什么是hive?

答:1:hive是基于hadoop的数据仓库建模工具之一(后面还有TEZ,Spark)。

2:hive可以使用类sql方言,对存储在hdfs上的数据进行分析和管理。传入一条交互式sql在海量数据中查询分析结果的工具。

sql语句是如何转化成MR任务的?

元数据存储在数据库中,默认存在自带的derby数据库(单用户局限性)中,推荐使用Mysql进行存储。

1) 解析器(SQL Parser):将SQL字符串转换成抽象语法树AST,这一步一般都用第三方工具库完 成,比如ANTLR;对AST进行语法分析,比如表是否存在、字段是否存在、SQL语义是否有误。

2) 编译器(Physical Plan):将AST编译生成逻辑执行计划。

3) 优化器(Query Optimizer):对逻辑执行计划进行优化。

4) 执行器(Execution):把逻辑执行计划转换成可以运行的物理计划。对于Hive来说,就是 MR/Spark。

内部表和外部表的区别?如何创建外部表?工作中使用外部表

删除表的时候,表对应的文件夹会被删除,同时数据也会被删除,默认建表的类型就是内部表。

外部表因为是指定其他的hdfs路径的数据加载到表中来,所以hive会认为自己不完全独占这份数据,删除hive表的时候,数据仍然保存在hdfs中,不会删除。

创建外部表是需要在table前加上关键字external。

 

标签:知识点,面试题,差别,数据库,Hive,hive,数据,分区
From: https://www.cnblogs.com/slm-1314521/p/16666507.html

相关文章

  • 肖sir ___海康面试题
    1、一个框为必填项     不输入的时候 可以点击提交        是前端bug 还是后端bug   2、前端做了校验 ,怎么判断后端有没有做校验3、一个字段校验不能......
  • 【金九银十必问面试题】站在架构师角度分析问题,如何解决TCC中的悬挂问题
    “如何解决TCC中的悬挂问题”!一个工作了4年的Java程序员,去京东面试,被问到这个问题。大家好,我是Mic,一个工作了14年的Java程序员这个问题面试官想考察什么方面的知识?我们......
  • Vue面试题13:说一说key的作用
    思路分析:1.给出结论,key的作用是用于优化patch性能;2.key的必要性;3.实际使用方式;4.总结:可从源码层面描述一下vue如何判断两个节点是否相同;回答范例:1.key的作用......
  • 【面试题】JS实现数组扁平化处理,妙不可言啊!
    JS实现数组扁平化处理点击打开视频讲解更加详细期望结果:将数组扁平化并去重最终得到一个升序且不重复的数组步骤:1、数组扁平化2、去重......
  • c++知识点速刷
    语法指针和引用指针:存放某个对象的地址引用:变量的别名,从一而终,不可变,必须初始化const变量指针常量(底层const):指针所指的对象不可变常量指针(顶层const):指针不可变defin......
  • 阿里前端一面必会面试题(附答案)
    浏览器的主要组成部分⽤户界⾯包括地址栏、前进/后退按钮、书签菜单等。除了浏览器主窗⼝显示的您请求的⻚⾯外,其他显示的各个部分都属于⽤户界⾯。浏览器引擎在⽤户......
  • 前端面试题
    js面试题undefinednullundefined假如变量没有被赋值,那么这个变量就是undefinedundefined表示变量未定义,typeof值为undefined。可以被重写(现代js标准已经规定......
  • 京东前端面试题
    代码输出结果f=function(){returntrue;};g=function(){returnfalse;};(function(){if(g()&&[]==![]){f=functionf(){return......
  • 计算机网络面试知识点总结
    计算机网络tcp/ip五层模型tcp和udp的区别UDP头部包含了以下几个数据:两个十六位的端口号,分别为源端口(可选字段)和目标端口整个数据报文的长度整个数据报文的检验和......
  • 前端面试题每日3题——2022-09-06
    每日3题22以下代码执行后,控制台中的输出内容为?vara=[1,2,3];a.join=a.shift;console.log(a==1&&a==2&&a==3);23以下代码执行后,控制台中的输出内......