The hadoop-provided profile is used to not package Hadoop dependencies inside the Spark assembly. It works, sort of, but it could use some enhancements. A quick list:
- It doesn't include all things that could be removed from the assembly
- It doesn't work well when you're publishing artifacts based on it (
- There are other dependencies that could use similar treatment: Hive, HBase (for the examples), Flume, Parquet, maybe others I'm missing at the moment.
- Unit tests, more specifically, those that use local-cluster mode, do not work when the assembly is built with this profile enabled.
- The scripts to launch Spark jobs do not add needed "provided" jars to the classpath when this profile is enabled, leaving it for people to figure that out for themselves.
- The examples assembly duplicates a lot of things in the main assembly.
Part of this task is selfish since we build internally with this profile and we'd like to make it easier for us to merge changes without having to keep too many patches on top of upstream. But those feel like good improvements to me, regardless.