Over a million developers have joined DZone.

How to Use Cassandra with Scala

DZone's Guide to

How to Use Cassandra with Scala

· Big Data Zone ·
Free Resource

How to Simplify Apache Kafka. Get eBook.

I have started a new open source project - https://github.com/stealthly/scala-cassandra - that is a Scala wrapper for CQL, specifically a wrapper of the DataStax java-driver.

Test cases are a good entry point, so let's start here: https://github.com/stealthly/scala-cassandra/blob/master/src/test/scala/ScalaCassandraSpec.scala

class ScalaCassandraSpec extends Specification {
    "Meta objects" should {
      "be able to store & retrieve their binary state" in {
      //we use a Thrift object here for portability of the data stored
      val tMeta = new TMeta()
      //setting up some randomness so we can confirm what we are writing is what we get back
      val metaUUID = UUID.randomUUID()
      val dataum = Random.alphanumeric.take(1000000).mkString
      Meta.save(tMeta) //Saved to C*
      val someNewTMeta = Meta(metaUUID)
      someNewTMeta.getId() must_== metaUUID.toString
      someNewTMeta.getDatum() must_== dataum

The Meta class (contained in the https://github.com/stealthly/scala-cassandra/blob/master/src/main/scala/MetaDAO.scala file) is like a widget… what's a widget? For us, let's think of it like “sample code”.

When you want to add something different than a widget, create a new thrift file in the `thrift/interface` directory

Then, in that directory (lets say you created an IDL called Music.thrift) run `thrift -gen java Music.thrift` which we did for you already, and copy the jar outputted from a `mvn package` to the `lib` folder so you don’t have to worry about it. You can even just keep using the Meta implementation and just shove JSON or XML or whatever you want into it; however, it makes more sense to partition the objects some so you can create wider rows with a collection key in your table along with your partition key. You can also flatten the things by storing a HashMap on the table and retrieving it.

12 Best Practices for Modern Data Ingestion. Download White Paper.


Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}