I've investigated a couple of helm charts for apache spark deployment and found that most of them use statefulset for deployment instead of normal k8s deployment resource.
E.g. the microsoft/spark uses normal deployment while bitnami/spark prefers statefulset.
I am just wondering is there any specific reason to do that?