美文网首页
hive面试题

hive面试题

作者: 进击的小恶魔 | 来源:发表于2019-04-01 01:33 被阅读0次

    http://bigdatastudy.net/show.aspx?id=163&cid=14

    https://blog.csdn.net/WYpersist/article/details/80102757

    Hive 原理

    1. 用户提交查询等任务给Driver。

    2. 编译器获得该用户的任务Plan。

    3. 编译器Compiler根据用户任务去MetaStore中获取需要的Hive的元数据信息。

    4. 编译器Compiler得到元数据信息,对任务进行编译,先将HiveQL转换为抽象语法树,然后将抽象语法树转换成查询块,将查询块转化为逻辑的查询计划,重写逻辑查询计划,将逻辑计划转化为物理的计划(MapReduce), 最后选择最佳的策略。

    5. 将最终的计划提交给Driver。

    6. Driver将计划Plan转交给ExecutionEngine去执行,获取元数据信息,提交给JobTracker或者SourceManager执行该任务,任务会直接读取HDFS中文件进行相应的操作。

    7. 获取执行的结果。

    8. 取得并返回执行结果。

    Mapreduce和hive的区别和联系

    http://www.360doc.com/content/14/1208/10/20466010_431234360.shtml

    hive是基于hadoop的数据仓库。

    那么为什么说hive是基于Hadoop的呢?

    之所以说hive是构建在Hadoop之上的数据仓库,简单的说是因为:

    ①数据存储在hdfs上

    ②数据计算用mapreduce

    Hive是一种建立在Hadoop文件系统上的数据仓库架构,并对存储在HDFS中的数据进行分析和管理;它可以将结构化的数据文件映射为一张数据库表,并提供完整的 SQL 查询功能,可以将 SQL 语句转换为 MapReduce 任务进行运行,通过自己的 SQL 去查询分析需要的内容,这套 SQL 简称 Hive SQL(HQL),使不熟悉MapReduce 的用户也能很方便地利用 SQL 语言对数据进行查询、汇总、分析。

    Hive不支持更改数据的操作,Hive基于数据仓库,提供静态数据的动态查询。其使用类SQL语言,底层经过编译转为MapReduce程序,在hadoop上运行,数据存储在HDFS上。

    简述有Hive之后,为何还要学mapreduce

    https://blog.csdn.net/WYpersist/article/details/79981385

    你觉得Hive是否支持in函数

    https://blog.csdn.net/WYpersist/article/details/79980945

    当输入hive 命令时卡住了,你认为是为什么,从哪些方面考虑

    Cpu ,网络,内存

    说出Hive 安装数据时,mysql和Derby的区别,为什么安装mysql ,或为什么安装Derby,分别有什么优缺陷

    https://blog.csdn.net/WYpersist/article/details/80101617

    简述Hive 桶表什么,什么作用,举例

    Hive 分区是什么,什么作用,该怎么分区

    Hive 动态分区和静态分区

    Hive 分区重命名

    说出Hive 导入数据的过程(表有多个分区,桶)

    Hive 排序

    什么是Hive join

    说说你所理解的Hive 视图操作

    Hive 序列函数

    简述Hive 自定义函数

    知道Hive UDF是什么吗,什么作用,为什么要用

    简述Hive 优缺点

    https://blog.csdn.net/wypersist/article/details/79999401

    说说Hive内部表和外部表分别是什么?为什么要建外部表?

    Hive内部表和外部表的区别

    https://blog.csdn.net/wypersist/article/details/80314022

    Hive 创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据。这样外部表相对来说更加安全些,数据组织也更加灵活,方便共享源数据。
      需要注意的是传统数据库对表数据验证是 schema on write(写时模式),而 Hive 在load时是不检查数据是否符合schema的,hive 遵循的是 schema on read(读时模式),只有在读的时候hive才检查、解析具体的数据字段、schema。
      读时模式的优势是load data 非常迅速,因为它不需要读取数据进行解析,仅仅进行文件的复制或者移动。

    写时模式的优势是提升了查询性能,因为预先解析之后可以对列建立索引,并压缩,但这样也会花费要多的加载时间。

    被external修饰的是内部表(managed table),被external修饰的为外部表(external table);
    区别:
    内部表数据由Hive自身管理,外部表数据由HDFS管理;
    内部表数据存储的位置是hive.metastore.warehouse.dir(默认:/user/hive/warehouse),外部表数据的存储位置由自己制定;
    删除内部表会直接删除元数据(metadata)及存储数据;删除外部表仅仅会删除元数据,HDFS上的文件并不会被删除;
    对内部表的修改会将修改直接同步给元数据,而对外部表的表结构和分区进行修改,则需要修复(MSCK REPAIR TABLE table_name;)

    https://blog.csdn.net/wypersist/article/details/80314022

    什么是数据倾斜

    Hive 表类型有哪些

    https://blog.csdn.net/dsl200970/article/details/70245916

    Mapreduce和hive的区别和联系

    http://www.360doc.com/content/14/1208/10/20466010_431234360.shtml

    hive是基于hadoop的数据仓库。

    那么为什么说hive是基于Hadoop的呢?

    之所以说hive是构建在Hadoop之上的数据仓库,简单的说是因为:

    ①数据存储在hdfs上

    ②数据计算用mapreduce

    Hive是一种建立在Hadoop文件系统上的数据仓库架构,并对存储在HDFS中的数据进行分析和管理;它可以将结构化的数据文件映射为一张数据库表,并提供完整的 SQL 查询功能,可以将 SQL 语句转换为 MapReduce 任务进行运行,通过自己的 SQL 去查询分析需要的内容,这套 SQL 简称 Hive SQL(HQL),使不熟悉MapReduce 的用户也能很方便地利用 SQL 语言对数据进行查询、汇总、分析。

    Hive不支持更改数据的操作,Hive基于数据仓库,提供静态数据的动态查询。其使用类SQL语言,底层经过编译转为MapReduce程序,在hadoop上运行,数据存储在HDFS上。

    说出Hive 如何调优,提升效率

    https://blog.csdn.net/WYpersist/article/details/80030499

    https://blog.csdn.net/WYpersist/article/details/80030921

    https://blog.csdn.net/WYpersist/article/details/80032327

    说出Hive 数据清洗的过程

    Hive 编程题

    5、海量数据分布在100台电脑上,统计出这批数据的TOP10。(写出核心算法思路)

    6、背景:现有商品,买家,卖家三个实体,实现一个小小型的交易系统

    1)给出表结构设计

    2)帅选出没有买过商品的用户

    3)写出sql 语句,帅选出仅仅购买了面粉的用户

    HIVE与RDBMS关系数据库的区别

    1、hive存储的数据量比较大,适合海量数据,适合存储轨迹类历史数据,适合用来做离线分析、数据挖掘运算,

    事务性较差,实时性较差

    rdbms一般数据量相对来说不会太大,适合事务性计算,实时性较好,更加接近上层业务

    2、hive的计算引擎是hadoop的mapreduce,存储是hadoop的hdfs文件系统,

    rdbms的引擎由数据库自己设计实现例如mysql的innoDB,存储用的是数据库服务器本地的文件系统

    3、hive由于基于hadoop所以存储和计算的扩展能力都很好,

    rdbms在这方面比较弱,比如orcale的分表和扩容就很头疼

    4、hive表格没有主键、没有索引、不支持对具体某一行的操作,适合对批量数据的操作,不支持对数据的update操作,

    更新的话一般是先删除表然后重新落数据

    rdbms事务性强,有主键、索引,支持对具体某一行的增删改查等操作

    5、hive的SQL为HQL,与标准的RDBMS的SQL存在有不少的区别,相对来说功能有限

    rdbms的SQL为标准SQL,功能较为强大。

    Hive分析窗口函数

    Hive 数据倾斜类

    Hive 取前10条数据

    https://blog.csdn.net/wypersist/article/details/80318305

    Hive 取最小成绩的记录和最大的记录

    Hive 四种排序

    https://blog.csdn.net/wypersist/article/details/80314431

    Hive 时间函数

    Mysql 和hive的区别

    Hive 的sql语句和mysql 的sql语句有什么不同

    Mysql和derby

    Hive 将元数据存储在 RDBMS 中,一般常用 MySQL 和 Derby。默认情况下,Hive 元数据保存在内嵌的 Derby 数据库中,只能允许一个会话连接,只适合简单的测试。实际生产环境中不适用, 为了支持多用户会话,则需要一个独立的元数据库,使用 MySQL 作为元数据库,Hive 内部对 MySQL 提供了很好的支持。

    内置的derby主要问题是并发性能很差,可以理解为单线程操作。

    Derby还有一个特性。更换目录执行操作,会找不到相关表等
    比如在/usr下执行创建表,在/usr下可以找到这个表。在/etc下执行查找这个表,就会找不到 。

    Hive存储格式

    https://blog.csdn.net/ly19901208/article/details/77049824

    Hive 工作原理

    https://blog.csdn.net/wypersist/article/details/80174647

    相关文章

      网友评论

          本文标题:hive面试题

          本文链接:https://www.haomeiwen.com/subject/hhapbqtx.html