在 Apache Druid 中,通常可以导入哪些常见的数据格式?请说明这些格式的数据是如何被导入到 Druid 中的。
考察说明
考查对 Apache Druid 支持的数据格式及导入方式的理解。
回答思路
- 【回答框架 1】Apache Druid 支持多种常见数据格式,包括 JSON、CSV、TSV、Parquet、ORC、Avro 等。这些格式覆盖了从简单的文本数据到复杂的列式存储格式。
- 【回答框架 2】导入数据主要通过两种方式:批量导入和流式导入。批量导入通常使用 Hadoop 或本地文件作为数据源,通过 Druid 的索引服务(如 Indexing Service)创建任务来加载数据。流式导入则通过 Kafka、Kinesis 等消息系统,使用 Druid 的实时节点(如 Tranquility 或 Kafka Indexing Service)持续摄入数据。
- 【回答框架 3】对于 JSON 和 CSV 等文本格式,Druid 提供了内置的解析器,可以直接在 ingestion spec 中配置数据格式和解析规则。对于 Parquet、ORC、Avro 等列式格式,Druid 通过扩展(如 druid-parquet-extensions)支持,需要在 ingestion spec 中指定相应的格式和 schema。
- 【回答框架 4】在导入过程中,需要定义数据源(datasource)、时间列(timestamp column)、维度(dimensions)和指标(metrics),并配置相应的转换和过滤规则。Druid 会根据这些配置将原始数据转换为列式存储的 Segment。
- 【回答框架 5】对于流式导入,Druid 支持 exactly-once 语义(在 Kafka 索引服务中),但需要合理配置提交周期和分区分配,以确保数据一致性和实时性。
- 【关键点 1】Druid 支持 JSON、CSV、TSV、Parquet、ORC、Avro 等格式。
- 【关键点 2】批量导入通过索引服务,流式导入通过 Kafka 或 Kinesis 索引服务。
- 【关键点 3】文本格式使用内置解析器,列式格式需要扩展支持。
- 【关键点 4】导入时需配置时间列、维度和指标。
- 【关键点 5】流式导入需关注提交周期和分区分配以保证一致性。
- 【易错点 1】不要混淆批量导入和流式导入的适用场景,实时性要求高时选择流式。
- 【易错点 2】列式格式(如 Parquet)需要额外扩展,否则无法解析。
- 【易错点 3】流式导入的 exactly-once 语义依赖外部系统(如 Kafka)的 offset 管理,配置不当可能导致重复或丢失。