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祝你面试顺利,并祝你未来一切顺利!干杯 :-)

hive_questions_answers.htm
广告