数据岗位面试题更新 2026-08-05

请解释 Hive 中 SerDe 的概念,并阐述它在数据读写流程中的功能。

数据技术原理Apache Hive

考察说明

考查对 Hive 序列化与反序列化机制的理解,以及其如何影响数据读写。

回答思路

  1. 【回答框架 1】SerDe 是 Serializer/Deserializer 的缩写,用于定义 Hive 表数据行与存储格式之间的转换:反序列化将文件中的字节转换为 Hive 行的 Java 对象,序列化将 Hive 行写回存储。
  2. 【回答框架 2】在读取数据时,Hive 通过 SerDe 解析文件,将字节流映射为表的列;在写入数据时,将行对象序列化为存储格式(如文本、JSON、Avro 等)。
  3. 【回答框架 3】SerDe 通常与 InputFormat 和 OutputFormat 配合:InputFormat 决定记录如何切分,SerDe 决定每条记录如何映射为列;写入过程相反。
  4. 【回答框架 4】不同 SerDe 适应不同数据格式,如 LazySimpleSerDe 用于文本,JsonSerDe 用于 JSON,AvroSerDe 用于 Avro。选择不当可能导致解析错误或性能下降。
  5. 【关键点 1】SerDe 包含序列化和反序列化,用于 Hive 行与文件字节的转换。
  6. 【关键点 2】读取文件时先由 InputFormat 切分记录,再由 Deserializer 将记录映射为行对象。
  7. 【关键点 3】写入数据时由 Serializer 将行对象转换为字节,配合 OutputFormat 写入文件。
  8. 【易错点 1】SerDe 只负责行与格式的转换,文件切分和存储布局由 InputFormat/OutputFormat 负责。
  9. 【易错点 2】不同 SerDe 对数据类型和格式的支持有差异,需要匹配实际数据,否则可能解析失败。