There are several key differences that were important to my use case.
Live benefits:
- Livy does not require any changes to your code, while SJS jobs must extend a specific class.
- Livy allows you to send code snippets as well as precompiled jar files, while SJS only accepts jar files.
- In addition to REST, Livy has the Java and Scala APIs. Python API is under development, SJS has a "binding to Python"
SJS Benefits:
- SJS can also manage banks. This allows you to load and store Jar files, and then deploy jobs from these JAR files with a separate REST call. Livi demands a can whenever you need to deploy a job.
- SJS jobs can be configured in the HOCON format, which can be sent as part of a REST call.
In addition, SJS has better documentation, although in both cases it is not exhaustive. And of course, keep in mind that both projects are pre v1, so things can change quickly.
In my case, we ended up with SJS since I did not use fragment submission, and the Jar management and HOCOCN configuration came in handy. I am, however, considering revising Livy in the near future for a more thorough assessment.
Sources:
source share