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

请说明在 Apache Drill 中,针对 JSON、Parquet 这类嵌套数据,查询时的具体使用方式或方法有哪些?

数据问题拆解技术原理Apache DrillJSON

考察说明

考查对 Apache Drill 处理嵌套数据能力的理解,以及实际查询操作的掌握程度。

回答思路

  1. 【回答框架 1】Apache Drill 支持直接查询多种文件格式,包括 JSON 和 Parquet。其核心能力是将文件系统或对象存储中的文件映射为可查询的表,无需预先定义 schema。
  2. 【回答框架 2】对于嵌套数据,Drill 使用点号(.)来访问嵌套字段。例如,若 JSON 中有字段 address.city,则查询时可写 SELECT address.city FROM ...。对于数组,可使用下标或横向展开(LATERAL TABLE)结合 FLATTEN 函数处理。
  3. 【回答框架 3】Parquet 本身是列式存储,且天然支持嵌套结构。Drill 会保留其嵌套层次,查询时同样使用点号访问。Drill 还支持通过 SQL 标准中的 UNNEST 或自定义函数处理重复嵌套字段。
  4. 【回答框架 4】在查询前,可使用 DESCRIBE 或 SHOW FILES 查看结构。Drill 还支持对目录、文件通配符进行查询,例如 SELECT * FROM dfs.tmp.`/path/*.json`。
  5. 【回答框架 5】Drill 的优化器会利用 Parquet 的元数据和列裁剪、谓词下推,提升查询性能。对于 JSON,则主要通过读取时的解析和投影实现。
  6. 【关键点 1】使用点号访问嵌套字段,如 address.city。
  7. 【关键点 2】处理数组时使用 FLATTEN 或下标索引。
  8. 【关键点 3】无需预定义 schema,支持 schema-on-read。
  9. 【关键点 4】Parquet 查询可利用列裁剪和谓词下推优化。
  10. 【关键点 5】支持通配符路径和 DESCRIBE 查看元数据。
  11. 【易错点 1】FLATTEN 只处理一层数组,多层嵌套需多次调用。
  12. 【易错点 2】点号访问时,若字段名本身含点,需用反引号包裹。
  13. 【易错点 3】JSON 查询可能产生大量数据扫描,需注意过滤条件下推。