8. 核心知识练习

8.1 练习题 12:追加与覆盖

下面关于 HiveQL 中 INSERT INTOINSERT OVERWRITE 的区别,说法不正确的是( )。

  • A. INSERT INTO 不会覆盖已经存在的数据。
  • B. INSERT OVERWRITE 会先将原始表的数据删除,再插入新数据。
  • C. INSERT INTO 不考虑原始数据,直接追加到表中。
  • D. INSERT INTO 重复的数据会报错。

答案:D。 Hive 表默认不会因为追加了重复内容而报错;是否需要去重由查询或数据处理逻辑决定。

8.2 练习题 13:分组

Hive 中分组的关键字是( )。

  • A. GROUP BY
  • B. ORDER BY
  • C. DISTRIBUTE BY
  • D. SORT BY

答案:A。 GROUP BY 用于按照一个或多个字段分组。

8.3 练习题 14:数组下标

已知数组 trans_cnt 的值为 [1, 2, 3, 4]trans_cnt[2] 的结果为( )。

  • A. 1
  • B. 2
  • C. 3
  • D. 4

答案:C。 Hive 的数组下标从 0 开始,下标 2 对应第三个元素 3

8.4 练习题 15:去重

在 Hive 中,不可以作为去重命令直接使用的是( )。

  • A. DISTINCT
  • B. GROUP BY
  • C. ROW_NUMBER
  • D. HAVING

答案:D。 HAVING 用于过滤分组后的结果,本身不是去重方法。DISTINCTGROUP BY 可直接去重,ROW_NUMBER() 可配合分区和序号筛选实现按规则去重。

8.5 练习题 16:Join 执行位置

外连接进行 Join 默认在( )。

  • A. Map 端
  • B. Reduce 端
  • C. External 端
  • D. Shuffle 端

答案:B。 Hive 的普通 Join 默认在 Reduce 端完成;满足特定条件时可以使用 Map Join 优化。