- Hive教程
- Hive - 首页
- Hive - 简介
- Hive - 安装
- Hive - 数据类型
- Hive - 创建数据库
- Hive - 删除数据库
- Hive - 创建表
- Hive - 修改表
- Hive - 删除表
- Hive - 分区
- Hive - 内置运算符
- Hive - 内置函数
- Hive - 视图和索引
- HiveQL
- HiveQL - Select Where
- HiveQL - Select Order By
- HiveQL - Select Group By
- HiveQL - Select Joins
- Hive有用资源
- Hive - 问答
- Hive - 快速指南
- Hive - 有用资源
Hive面试题
尊敬的读者,这些Hive面试题专为帮助您熟悉面试中可能遇到的关于Hive主题的问题而设计。根据我的经验,优秀的面试官很少会预先计划好要问哪些具体问题,通常会从该主题的一些基本概念开始,然后根据进一步的讨论和您的回答继续提问。
有两种类型:管理表和外部表。在管理表中,数据和模式都在Hive的控制之下,但在外部表中,只有模式在Hive的控制之下。
不,Hive不提供行级插入和更新。因此,它不适合OLTP系统。
ALTER TABLE table_name RENAME TO new_name
使用REPLACE列选项
ALTER TABLE table_name REPLACE COLUMNS ……
它是一个关系数据库,存储Hive表、分区、Hive数据库等的元数据。
根据用户拥有的数据的性质,内置的Serde可能无法满足数据的格式。因此,用户需要编写自己的Java代码来满足他们的数据格式要求。
Hive是Hadoop生态系统中的一个工具,它提供了一个类似数据库的界面来组织和查询数据,并编写类似SQL的查询。它适合使用SQL语法访问和分析Hadoop中的数据。
hdfs://namenode_server/user/hive/warehouse
- 本地模式
- 分布式模式
- 伪分布式模式
是的。TIMESTAMP数据类型以java.sql.timestamp格式存储日期。
Hive中有三种集合数据类型。
- 数组(ARRAY)
- 映射(MAP)
- 结构体(STRUCT)
是的,在命令前使用!标记。
例如,在Hive提示符下输入!pwd将列出当前目录。
Hive变量是在Hive环境中创建的变量,Hive脚本可以引用它。它用于在查询开始执行时将一些值传递给Hive查询。
使用source命令。
示例:
Hive> source /path/to/file/file_with_query.hql
它是一个包含需要在Hive CLI启动时运行的命令列表的文件。例如,将严格模式设置为true等。
默认记录分隔符是:\n
字段分隔符是:\001,\002,\003
在读取数据时验证模式与数据是否匹配,写入数据时不强制执行模式。
SHOW DATABASES LIKE ‘p.*’
使用use命令,您可以确定所有后续Hive查询将运行的数据库。
无法删除DBPROPERTY。
它将MapReduce作业设置为严格模式。这样,对分区表的查询就不能在没有WHERE子句的情况下运行。这可以防止非常大的作业长时间运行。
可以使用以下查询:
SHOW PARTITIONS table_name PARTITION(partitioned_column=’partition_value’)
org.apache.hadoop.mapred.TextInputFormat
org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
当我们发出命令DROP TABLE IF EXISTS table_name时,
如果要删除的表不存在,Hive会抛出错误。
数据保留在旧位置。必须手动移动它。
ALTER TABLE table_name CHANGE COLUMN new_col INT BEFORE x_col
不会。它只会减少文件数量,使NameNode更容易管理。
使用ALTER TABLE语句中的ENABLE OFFLINE子句。
省略LOAD DATA语句中的LOCAL子句。
新传入的文件只是添加到目标目录中,现有文件会被简单地覆盖。名称与任何传入文件不匹配的其他文件将继续存在。
如果添加OVERWRITE子句,则会在写入新数据之前删除目录中的所有现有数据。
它根据select子句中的列创建employees表的partitions。这称为动态分区插入。
表生成函数是一个函数,它将单个列作为参数,并将其扩展为多个列或行。例如explode()。
如果我们将属性hive.exec.mode.local.auto设置为true,则Hive将避免使用MapReduce来获取查询结果。
LIKE运算符的行为与select查询中使用的常规SQL运算符相同。例如:
street_name like ‘%Chi’
但是RLIKE运算符使用更高级的正则表达式,这些正则表达式在Java中可用。
例如:street_name RLIKE ‘.*(Chi|Oho).*’,它将选择任何包含“Chi”或“Oho”的单词。
不可以。因为这种类型的连接无法在MapReduce中实现。
在连接查询中,最小的表应放在第一个位置,最大的表应放在最后一个位置。
它控制map输出如何在reducer之间进行reduce。它在流数据的情况下非常有用。
Select cast(price as FLOAT)
Hive将返回NULL。
不可以。与同一数据库中所有其他表和视图相比,视图的名称必须唯一。
不可以。视图不能是INSERT或LOAD语句的目标。
索引占用空间,并且在排列创建索引的列的值时会产生处理成本。
SHOW INDEX ON table_name
这将列出在table_name表中任何列上创建的所有索引。
列中的值被哈希到用户定义的多个桶中。这是一种避免过多分区或嵌套分区同时确保优化查询输出的方法。
这是一个查询提示,用于在运行查询之前将表流式传输到内存中。这是一种查询优化技术。
可以。分区可以归档。优点是它减少了存储在NameNode中的文件数量,并且可以使用Hive查询归档文件。缺点是它会导致查询效率降低,并且不会节省任何空间。
它是一个UDF,使用Java程序创建,用于满足Hive中现有函数未涵盖的特定需求。它可以以编程方式检测输入参数的类型并提供相应的响应。
本地输入路径应包含文件而不是目录。$env:HOME是在Hive环境中可用的有效变量。
TBLPROPERTIES子句用于在创建表时添加创建者名称。
TBLPROPERTIES添加方式如下:
TBLPROPERTIES(‘creator’= ‘Joan’)
下一步是什么?
此外,你可以回顾一下你以前做过与该科目相关的作业,确保你能自信地谈论它们。如果你刚毕业,面试官并不期望你能回答非常复杂的问题,而是要确保你的基础概念非常扎实。
其次,你答不上几个问题其实并不重要,重要的是,你回答的任何问题都必须充满自信。所以面试时一定要自信。我们在tutorialspoint祝你面试顺利,并祝你未来一切顺利!干杯 :-)