Distributed and fault-tolerant realtime computation

Can Storm be used with any programming language?

Last reviewed:

Yes. Topologies are defined with Apache Thrift, so any language with a Thrift library can define and submit them. Spouts and bolts written outside the JVM talk to Storm through a simple JSON protocol over stdin and stdout. Adapters exist for Ruby, Python, JavaScript, Perl and PHP, and JVM languages such as Java, Clojure and Scala work natively.

Storm was designed from the ground up to be usable with any programming language. At the core of Storm is a Thrift definition for defining and submitting topologies. Since Thrift can be used in any language, topologies can be defined and submitted from any language.

Similarly, spouts and bolts can be defined in any language. Non-JVM spouts and bolts communicate to Storm over a JSON-based protocol over stdin/stdout. Adapters that implement this protocol exist for Ruby, Python, Javascript, Perl, and PHP.

storm-starter has an example topology that implements one of the bolts in Python.

(As of 2012. The adapter links point to the Storm 0.8.1 source, the version this page described.)