title: ETL in Java Spring Batch vs Apache Spark Benchmarking
body: <p>I have been working with Apache Spark + Scala for over 5 years now (Academic and Professional experiences). I always found Spark/Scala to be one of the robust combos for building any kind of Batch or Streaming ETL/ ELT applications. </p>
  
  <p>But lately, my client decided to use Java Spring Batch for 2 of our major pipelines :  </p>
  
  <ol>
  <li>Read from MongoDB --> Business Logic --> Write to JSON File (~ 2GB | 600k Rows)</li>
  <li>Read from Cassandra --> Business Logic --> Write JSON File (~ 4GB | 2M Rows)</li>
  </ol>
  
  <p>I was pretty baffled by this enterprise-level decision. I agree there are greater minds than mine in the industry but I was unable to comprehend the need of making this move. </p>
  
  <p><strong>My Questions here are:</strong></p>
  
  <ol>
  <li>Has anybody compared the performances between Apache Spark and Java Spring Batch?</li>
  <li>What could be the advantages of using Spring Batch over Spark?</li>
  <li>Is Spring Batch "truly distributed" when compared to Apache Spark? I came across methods like chunk(), partition etc in <a href="https://docs.spring.io/spring-batch/4.1.x/reference/html/scalability.html" rel="noreferrer">offcial docs</a> but I was not convinced of its true distributedness. After all Spring Batch is running on a single JVM instance. Isn't it ??? </li>
  </ol>
  
  <p>I'm unable to wrap my head around these. So, I want to use this platform for an open discussion between Spring Batch and Apache Spark.  </p>