Hi all, A short follow-up to the discussion from August on adding Apache TsFile as an input format:
https://lists.apache.org/thread/qmrkhobp7p07wkmcf4y4myq36k866zz0 apache/druid#20729 has been merged into master (merged 2026-11-01 by Frank Chen), so the community extension we agreed on is now in the tree. Thank you for the review — it was thorough, and the extension is better for it. What landed extensions-contrib/tsfile-extensions (artifactId druid-tsfile-extensions), adding an InputFormat of type tsfile, implemented on org.apache.tsfile:tsfile:2.5.0 using the table-model reader. Batch ingestion works with both index_parallel specs and MSQ EXTERN. tables / columns select a subset of the file; interval is pushed down and uses the per-chunk time statistics to prune chunks. TsFile's implicit timestamp is exposed as Time (epoch millis), so specs use "timestampSpec": {"column": "Time", "format": "millis"}. Docs: docs/development/extensions-contrib/tsfile.md. The only new Druid dependencies are org.apache.tsfile:tsfile and org.apache.tsfile:common, both Apache-2.0; the transitive compression and parser libraries were already shipped by Druid. TsFile 2.5.0 required xz 1.10, which is why the root pom moved from 1.9 to 1.10 in the same PR. Current scope This first version reads the table model. Tree-model files are not supported yet, the format is not splittable (parallelism is one file per task from the input source), and VECTOR/OBJECT/ROW/UNKNOWN columns are rejected with an explicit error. As agreed, the TsFile community maintains this extension and runs its compatibility testing as TsFile evolves. Feedback and issues are very welcome here or against apache/druid — we'll follow up on both. Best regards, ColinLee, Apache TsFile PMC
