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





Reply via email to