Description
To support upcoming Spark releases, we currently need to copy many files from `spark/spark-2.X` to `spark/spark-2.Y' and then fix some compile errors happened there. It seems this works fine though, this copying makes an amount of code files blow up. So, we need to clean up source code structure (e.g., APIs) for easily following up-coming Spark releases.