We shouldn't be exposing the `CompletionEvent` class to people who write a `SparkListener`, because it's an internal class in the scheduler that might change over time. `SparkListener` is a somewhat public API (you can plug in your own) so it would be nice to make it as forward-compatible as possible. Instead of doing this, create a `SparkListenerTaskEnded` class and include the task ID, Stage, machine it ran on, etc (the things you need to log it).