I do get the point. I guess my primary concern in public API change; we really dont want to be changing RDD API change if there are ways around it. Specially adding `getPartitioner` is not the right way, as that gives the users two methods `RDD.partitioner` and `RDD.getPartitioner` to access partitions. Thats confusing. 

The right way should be `RDD.partitioner` be converted from val to def. It will use a internal private field called `partitioner_`  to store the partitioner and check for null. See `RDD.partitions` or `RDD.dependencies` for reference.