HIVE面试问题

这篇具有很好参考价值的文章主要介绍了HIVE面试问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

HIVE面试问题

什么是hive:

  • hive是基于Hadoop的一个数据仓库工具,可将HDFS上一个结构化的数据文件映射为数据表,方便进行管理。
    HIVE也可以使用完整的SQL语句进行查询,是把SQL语句转换为MapReduce任务在hadoop运行,写SQL比写MapReduce任务学习成本低很多。

hive内部表和外部表的区别:

  • 未被external修饰的是内部表,被external修饰的为外部表。
    区别:
    内部表数据由Hive自身管理,外部表数据由HDFS管理,存储位置由自己指定;
    删除内部表会直接删除元数据(metadata)及存储数据;删除外部表仅仅会删除元数据,HDFS上的文件并不会被删除。

hive存储格式:

  • STORED AS TEXTFILE; --存储的数据是文本,可以直接读取
  • STORED AS ORC;–存储的数据是二进制,不可以直接读取
  • STORED AS PARQUET;–存储的数据是二进制,不可以直接读取

hiveHIVE小文件过多处理:

  • 1)使用hive自带的concatenate命令,自动合并小文件,但只能处理ORC,sql: alter table A concatenate;
  • 2)调整参数减少MAP数量
  • 3)调整参数减少REDUCE数量
  • 4)使用hadoop的archive将小文件归档,但归档后不能直接insert
  • 5)如果一次性解决一张历史性遗留问题表,建议备份数据重建表,或者insert overwrite
  • 6)减少使用动态分区的使用,动态分区会产生大量的小文件。

Hive的两张表关联,使用MapReduce怎么实现?

  • 首先在MAP端读取源表的数据,Map输出时候以Join on条件中的列为key,如果Join有多个关联键,则以这些关联键的组合作为key;
    Map输出的value为join之后所关心的(select或者where中需要用到的)列;同时在value中还会包含表的Tag信息,用于标明此value对应哪个表;
    按照key进行排序,接着根据key的值进行hash,并将key/value按照hash值推送至不同的reduce中,这样确保两个表中相同的key位于同一个reduce中
    ,最后根据key的值完成join操作,期间通过Tag来识别不同表中的数据。

HIVE特点(HIVE和RDBMS有何异同)

  • 1)Hive不支持实时查询,适合离线批量数据处理。
  • 2)延迟性比较高,适合对实时性不高的应用场景,比如数仓、大数据分析
  • 3)HIVE适合数据量大的场景,商业数据库数据量大会非常影响效率。
  • 4)HIVE不支持事物,比如关系型数据库里的各种锁,并不适合单条数据修改的场景。
  • 5)HIVE支持修改数据的存储格式,比如TXTFILE,ORC,PARQUET,或者修改压缩格式,在关系型数据库里就没有这些选项。

什么是主数据、元数据

  • 主数据:实际业务数据
  • 元数据:描述数据的数据,对数据及信息资源的描述性信息,大部分属性字段就是元数据

数据排序 row_number(),rank()和dense_rank()的区别:

  • row_number() 按顺序生成唯一值,排序相同时序号唯一
  • rank() 排序相同时序号相同,总序号数不变
  • dense_rank() 排序相同时序号相同,总序号数减少

Hive有索引吗

  • Hive支持索引(3.0版本之前),但是Hive的索引与关系型数据库中的索引并不相同。并且 Hive索引提供的功能很有限,效率也并不高,因此Hive索引很少使用。
  • 索引适用的场景:适用于不更新的静态字段。以免总是重建索引数据。每次建立、更新数据后,都要重建索引以构建索引表。

sort by 和 order by 的区别

  • order by 会对输入做全局排序,因此只有一个reducer(多个reducer无法保证全局有序)只有一个reducer,会导致当输入规模较大时,需要较长的计算时间。
  • sort by不是全局排序,其在数据进入reducer前完成排序. 因此,如果用sort by进行排序,并且设置mapred.reduce.tasks>1, 则sort by只保证每个reducer的输出有序,不保证全局有序。

请说明hive中 Sort By,Order By,Cluster By,Distrbute By各代表什么意思?

  • Order by:会对输入做全局排序,因此只有一个reducer(多个reducer无法保证全局有序)。只有一个reducer,会导致当输入规模较大时,需要较长的计算时间。
  • Sort by:不是全局排序,其在数据进入reducer前完成排序。1
  • Distribute by:按照指定的字段对数据进行划分输出到不同的reduce中。
  • Cluster by:除了具有 distribute by 的功能外还兼具 sort by 的功能。

开窗函数使用

  • 聚合开窗函数:sum() --求和开窗
  • 排名开窗函数:row_number()、rank()、dense_rank() --排名开窗
  • 格式是开窗函数+over()语法,内含分组、排序、窗口范围等,如:row_number over(partition by 分组字段 order by 排序字段 asc|desc rows between 开始位置 and 结束位置)
  • 常使用的窗口范围是rows between unbounded preceding and current row,表示从起点到当前行,常用该窗口来计算累加
  • 求和开窗:
    select name,orderdate,cost,
    sum(cost) over() as sp1, --所有行相加
    sum(cost) over(partition by name) as sp2, --按名字分组,组内相加
    sum(cost) over(partition by name order by orderdate) as sp3, --按名字分组并按时间排序
    查看顾客上次和下次的购买时间
    select name,orderdate,cost,
    lag(orderdate,1) over(distribute by name sort by orderdate)as sp1,–上次购买时间
    lead(orderdate,1) over(distribute by name sort by orderdate)as sp2–下次购买时间
    from business;
    LAG(col,n): 往前第 n 行数据
    LEAD(col,n):往后第 n 行数据

Hive的函数:UDF、UDAF、UDTF的区别?

  • UDF:单行进入,单行输出
  • UDAF:多行进入,单行输出
  • UDTF:单行输入,多行输出

所有的Hive任务都会有MapReduce的执行吗?

  • 不是,从Hive0.10.0版本开始,对于简单的不需要聚合的类似SELECT from LIMIT n语句,不需要起MapReduce job,直接通过Fetch task获取数据。

文章来源地址https://www.toymoban.com/news/detail-841457.html

到了这里,关于HIVE面试问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Hive 导入csv文件,数据中包含逗号的问题

    今天 Hive 导入 csv 文件时,开始时建表语句如下: 然后导入 csv 文件,发现数据串列了,查看数据发现是因为数据中包含逗号的问题,因为 csv 文件列分隔符就为逗号,所以直接导入到表中会使数据串列。 查询资料发现是建表语句的问题,所以我们要需要在建表的时候指定列

    2024年02月11日
    浏览(44)
  • 大数据面试题:Hive的cluster by 、sort by、distribute by 、order by 区别?

    面试题来源: 《大数据面试题 V4.0》 大数据面试题V3.0,523道题,679页,46w字 参考答案: 可回答:1)Hive的排序函数;2)Hive的排序,以及各自的区别;3)四个by的区别? 参考答案: 共有四种排序:Order By,Sort By,Distribute By,Cluster By 1、Order By :全局排序 对输入的数据做排

    2024年02月09日
    浏览(42)
  • 成功解决DataX从Hive导出Oracle的数据乱码问题!

    大数据与 RDBMS 之间的数据导入和导出都是企业日常数据处理中常见的一环,该环节一般称为 e-t-l 即 extract-transform-load 。市面上可用的 etl 工具和框架很多,如来自于传统数仓和 BI 圈的 kettle/informatica/datastage , 来自于 hadoop 生态圈的 sqoop/datax ,抑或使用计算引擎 spark/presto/fli

    2024年02月13日
    浏览(39)
  • 使用Sqoop命令从Oracle同步数据到Hive,修复数据乱码 %0A的问题

    一、创建一张Hive测试表 创建分区字段partition_date,指定分隔符“,” 二、编写Sqoop数据同步命令 我这里使用的是shell脚本的方式: 命令相关属性说明: --connect:连接Oracle数据库的URL,例如jdbc:oracle:thin:@219.216.110.120:1521:orcl。 --username:连接Oracle数据库的用户名,例如TEST1。

    2024年02月04日
    浏览(52)
  • 关于hive3多表leftjoin导致数据丢失问题及解决方案

    最近业务场景需要将一张大表通过name名字关联多个小表去获取他们的id,大表数据9000w,小表数据最大180w,最小30w,我以主表leftjoin的时候发现了数据丢失问题 代码如下  结果显示数据我t7的数据由180w剩下9w,发生了严重的数据丢失,在别的表也有不同程度的丢失问题. 最后发现这个问

    2024年02月15日
    浏览(53)
  • Hive面试题十道

    问题 1:什么是Hive? 答案:Hive是一个基于Hadoop的数据仓库工具,它提供了类似SQL的查询语言(HiveQL)来进行大规模数据的分析和处理。Hive将结构化数据映射到Hadoop的分布式文件系统(HDFS)上,并通过MapReduce任务执行查询操作。 问题 2:Hive的主要特性是什么? 答案:Hive的主

    2024年02月12日
    浏览(38)
  • Hive篇面试题+详解

    Hive篇面试题 Hive是一个基于Hadoop的数据仓库工具,它提供了一个类SQL的查询语言(HiveQL)来查询和分析存储在Hadoop集群中的大规模数据。Hive的主要功能是将结构化数据映射到Hadoop的分布式文件系统(HDFS)上,并提供高级查询和分析功能。 Hive与传统关系型数据库的主要区别在

    2024年02月07日
    浏览(28)
  • hive面试题(一)

    1 hive sql提交流程和各组件的作用 用户提交 SQL 语句:用户通过 Hive 客户端提交 SQL 语句到 Hive 服务器。 解析器(Parser):Hive 服务器接收到 SQL 语句后,由解析器对其进行语法分析和解析。 语法树(AST)生成:通过解析器生成语法树,即 AST(Abstract Syntax Tree)。 查询优化器(

    2024年02月10日
    浏览(22)
  • 2023 Hive 面试大纲

    先说一些废话 总结一下Hive面试宝典中的要点,方便读者快速过一遍Hive面试所需要的知识点。 本文请搭配 Hive面试宝典 来食用更美味哟 ┗( ▔, ▔ )┛ 方便自己系统性回忆,根据 * 的数量来标记重要性 * 简单了解 ** 熟悉掌握 *** 需要精通 Hive的介绍(*) Hive和Hadoop的关系 Hiv

    2024年02月15日
    浏览(29)
  • 2023 Hive 面试宝典

    先说一些废话 总结一下Hive面试宝典,方便读者快速过一遍Hive面试所需要的知识点 Hive利用hdfs存储数据,利用MapReduce查询数据 Hive的数据存储在hdfs上,简单的说Hive就是hdfs的简单一种映射,比如:Hive的一张表映射hdfs上的一个文件,Hive的一个数据库就映射为hdfs上的文件夹 Hi

    2024年02月15日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包