Why tranquility code depends on druid-server?

I am trying to send data from my application to Druid by using tranquility as a java library. And I have discovered, that “io.druid:tranquility-core” depends on “io.druid:druid-server”, which is huge dependency. My war file has grown 68M (from 57 to 125). That is insane, mildly put :slight_smile: Is it really needed?

Connected question, why druid server depends on WHOLE amazon sdk? Not just “com.amazonaws:aws-java-sdk-s3” ?

Best wishes


Hey Nikita,

druid-server is used by Tranquility for a few things: parsing configs, loading your aggregators, parsing input rows (if you use one of the Tranquillity options that takes byte arrays or strings instead of objects), and partitioning rows by dimension. There hasn’t been a lot of work put into trying to trim that down, but I bet you could get it a lot smaller by excluding things you don’t need (you probably don’t need aws-java-sdk from within Tranquility).

Another option is to use Tranquility Server rather than Core, so you don’t need to embed anything in your war file.

Another option is to use Kafka. In that case you’d embed org.apache.kafka:kafka-clients in your war file, and use either Tranquility Kafka or the new Kafka indexing service to load data into Druid. We have tutorials for both of those options at: http://imply.io/docs/latest/tutorial-kafka.html