8. 核心知识练习
8.1 练习题 12:追加与覆盖
下面关于 HiveQL 中 INSERT INTO 和
INSERT 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
用于过滤分组后的结果,本身不是去重方法。DISTINCT 和
GROUP BY 可直接去重,ROW_NUMBER()
可配合分区和序号筛选实现按规则去重。
8.5 练习题 16:Join 执行位置
外连接进行 Join 默认在( )。
- A. Map 端
- B. Reduce 端
- C. External 端
- D. Shuffle 端
答案:B。 Hive 的普通 Join 默认在 Reduce 端完成;满足特定条件时可以使用 Map Join 优化。