面试题答案
一键面试实现思路
- 数据读取:使用 HBaseInputFormat 从 HBase 表中读取数据。
- Map 阶段清洗:在 Map 函数中对读取到的每条记录进行格式检查和脏数据处理。
- Reduce 阶段处理:Reduce 阶段可以进一步汇总或者二次检查清洗后的数据(可选,若 Map 阶段已完成所有清洗工作,Reduce 阶段可简单直接输出)。
- 结果输出:将清洗后的数据输出到 HBase 新表或者其他存储介质。
关键步骤
- 配置 MapReduce 作业:设置作业的输入输出格式,指定输入为 HBase 表,输出可根据需求设置。
- Map 阶段
- 输入:从 HBase 表中读取的每行数据,以
KeyValue
对形式输入。 - 处理:解析
KeyValue
对获取具体数据字段,对每个字段进行格式校验(例如日期格式、数字格式等),去除不符合格式的数据,处理脏数据(如空值填充、异常值修正等)。 - 输出:清洗后的数据作为键值对输出,键可以是行键或者其他标识,值为清洗后的整行数据。
- 输入:从 HBase 表中读取的每行数据,以
- Reduce 阶段
- 输入:Map 阶段输出的键值对。
- 处理:可对相同键的数据进行二次检查或汇总(若有需求)。例如,如果键是某个分类标识,可对同一分类的数据再次检查是否存在跨分类的脏数据。
- 输出:清洗且处理后的最终数据。
- 输出数据:将 Reduce 阶段输出的数据写入到 HBase 新表或者其他存储(如 HDFS 文件)。如果写入 HBase 新表,需配置 HBaseOutputFormat 并定义如何将数据写入表结构。