Hadoop/Hive 生态测试基础

共 18 题
#

1. 大数据测试与常规功能测试在数据规模、数据依赖与执行时间上的本质差异是什么?

A 大数据测试可以逐条断言所有数据,保证全覆盖
B 大数据测试与常规功能测试的唯一区别是数据量更大,方法完全相同
C 大数据测试只需要验证逻辑正确性,无需关注数据规模与执行时间
D 大数据测试因数据规模大、执行时间长、依赖链复杂,通常采用分层抽样、对账与血缘裁剪等策略而非穷举断言 ✓ 正确答案
#

2. Hive 测试中如何构造"小表驱动大表"的数据分布,验证 MapJoin 与数据倾斜场景?

A 只要数据量大就一定会触发 MapJoin
B 小表能装入内存时倾向于触发 MapJoin,测试可用 EXPLAIN 断言执行计划,并用倾斜 key 构造验证倾斜修复 ✓ 正确答案
C 数据倾斜与小表无关,无需构造
D MapJoin 无法通过 EXPLAIN 验证
#

3. Hive 自定义函数(UDF/UDAF/UDTF)的测试,入参边界、Null 处理、类型转换与性能验证

A 只需验证函数在正常输入下能返回正确结果即可
B 自定义函数不需要考虑 Null 输入
C 性能验证对 UDF 不重要
D UDF 应覆盖入参边界、Null 处理、类型转换,UDAF 覆盖聚合与空组场景,并验证大数据量下的性能与内存稳定性 ✓ 正确答案
#

4. Hadoop 集群测试中,NameNode 高可用、数据节点故障与机架感知如何纳入故障测试范围?

A 只需测试 NameNode 高可用,无需关注数据节点故障
B 应通过故障注入测试 NameNode 切换、数据节点故障后的副本恢复与机架感知副本放置策略,以验证集群可用性与数据可靠性 ✓ 正确答案
C 数据节点故障后副本无法自动恢复
D 机架感知与故障恢复无关
#

5. 如何验证 Hive 分区分桶表的数据完整性(分区丢失、桶内数据错位)?

A 只需检查分区数量即可
B 应对比元数据与实际文件目录验证分区无丢失,并校验分桶数、桶内分布与同 key 落桶一致性来防止数据错位 ✓ 正确答案
C 桶内数据错位不影响查询结果
D 分区丢失无法通过元数据与文件系统对比发现
#

6. 大数据任务的"数据血缘"测试,如何断言上下游表之间的行数、去重口径一致?

A 血缘测试只需确认表之间存在引用关系即可
B 血缘测试与行数对账无关
C 去重口径无需在血缘测试中验证
D 应通过解析血缘识别上下游,并对行数、去重键与去重口径做 join 对账,断言上下游数据一致无丢失无重复 ✓ 正确答案
#

7. Hive 任务的测试要点,SQL 逻辑正确性、UDF 边界、分区裁剪与数据倾斜如何验证?

A SQL 逻辑用 golden 用例断言、UDF 覆盖边界与 Null、分区裁剪用 EXPLAIN 断言、数据倾斜构造分布验证修复,四者缺一不可 ✓ 正确答案
B 分区裁剪不影响性能,无需验证
C 只需要验证 SQL 在正确输入下结果正确
D 数据倾斜无法构造与测试
#

8. 大数据测试的数据构造,如何生成海量测试数据(模拟分布/边界/异常),与生产数据脱敏的配合?

A 应通过放大生成海量数据、模拟分布/边界/异常覆盖特殊场景,并用不可逆脱敏保证业务可用,兼顾规模、覆盖度与安全性 ✓ 正确答案
B 脱敏后的数据无需保持业务可用与分布形态
C 测试数据不需要模拟异常与边界
D 只能用生产数据脱敏,不能合成
#

9. 小文件问题对 Hive 任务的影响测试,小文件数量、合并策略与读取性能的关系如何验证

A 合并后无需验证数据完整性
B 小文件数量不影响性能
C 应量化不同文件数下的读取耗时与 Map 任务数,验证合并策略能减少文件数并提升性能,同时确认合并不丢失数据 ✓ 正确答案
D 合并策略一定能带来性能提升,无需对比
#

10. 大数据任务的回归策略,如何用抽样、增量与血缘裁剪全量重跑的范围?

A 每次变更都必须全量重跑所有数据
B 抽样回归无法发现任何问题
C 可通过抽样快速回归、增量聚焦变更数据、血缘裁剪确定受影响下游范围,从而缩小全量重跑范围并控制成本 ✓ 正确答案
D 血缘与回归范围无关
#

11. Hive 动态分区与静态分区的测试,动态分区写入的模式匹配、分区数上限与同名分区覆盖行为如何验证?

A 动态分区与静态分区完全一样
B 分区数超限不会报错,可忽略
C 同名分区覆盖行为无需验证
D 应验证动态分区列与目录的模式匹配、分区数上限的正确拦截与 INSERT OVERWRITE 对同名分区的覆盖行为,防止分区爆炸与数据被覆盖 ✓ 正确答案
#

12. 不同执行引擎的结果一致性,同一 Hive SQL 在 Tez、Spark 与 MR 引擎下的结果与性能差异如何回归?

A 同一 SQL 在不同引擎下结果必然完全一致
B 引擎差异不影响结果,无需回归
C 应分别执行并对账行数与聚合值,容忍浮点精度差异,重点验证聚合顺序、NULL 处理与排序等差异点,并对比性能 ✓ 正确答案
D 浮点精度差异一定是 bug
#

13. HBase 的读写模型测试与 Hive 批处理测试在验证点上有什么不同?

A HBase 也主要用 SQL 对账验证
B 两者的验证点完全相同
C HBase 侧重 RowKey 设计、读写延迟、并发与一致性,Hive 侧重 SQL 逻辑、分区聚合与批处理正确性,验证点与手段不同 ✓ 正确答案
D Hive 更关注点查延迟
#

14. Hadoop 生态的集成测试,HDFS 读写、YARN 资源、数据压缩格式(Parquet/ORC)如何验证?

A 只需验证 HDFS 读写即可
B 应验证 HDFS 读写完整性、YARN 资源调度与限制、Parquet/ORC 的读写正确性与压缩/裁剪性能,验证组件协同 ✓ 正确答案
C 压缩格式不影响查询
D YARN 资源不足时任务必然成功
#

15. Hive 向量化执行与执行计划差异对结果的影响,如何用 EXPLAIN 断言计划变更?

A 应验证向量化开闭前后结果一致,并用 EXPLAIN 断言关键算子与计划变更,防止性能优化与计划变化引入回归 ✓ 正确答案
B EXPLAIN 无法反映执行计划
C 向量化执行不会改变结果,无需验证
D 计划变更不会影响结果和性能
#

16. Hive SQL 的静态检查,表/字段存在性、分区裁剪与权限的自动校验如何实现?

A 静态检查只能检查语法错误
B 表/字段存在性只能运行期发现
C 分区裁剪无法静态校验
D 通过解析 AST 与元数据、权限系统比对,可自动校验表/字段存在性、分区裁剪与权限,作为 CI 质量门禁提前拦截错误 ✓ 正确答案
#

17. 大数据测试中的空值与脏数据分布模拟,如何构造贴近生产的异常数据样本?

A 只需注入大量 NULL 即可贴近生产
B 应根据生产统计按比例构造空值、格式错误、超长、重复、越界等脏数据,使其占比与类型贴近真实,以验证异常分支处理 ✓ 正确答案
C 脏数据比例无需与生产一致
D 异常样本无法触发异常分支
#

18. Hive Join 类型的边界测试,inner、left、right、full、semi 与 anti join 在空表、NULL 键与重复键下的结果如何断言?

A 各 join 类型在 NULL 键下结果相同
B 应针对 inner/left/right/full/semi/anti 分别在空表、NULL 键与重复键下构造已知输入输出断言行数与列值,覆盖每种 join 的边界语义 ✓ 正确答案
C semi join 与 inner join 在 NULL 键下行为一致
D 空表下所有 join 结果一致