https://medium.com/@shenoy.shashwath/understanding-spark-streaming-core-components-and-optimization-techniques-9d6b560c326c