https://stackoverflow.com/questions/1958621/whats-an-aggregate-root
https://stackoverflow.com/questions/46402759/spark-accumulators-thread-safety-longaccumulator-seems-to-be-broken
https://stackoverflow.com/questions/36648128/how-to-store-custom-objects-in-dataset?r=SearchResults