Add a NULL check in ReduceKeyReduceSide#equals().
Revert to using RDD#collect() for map joins,
Since Spark can send Task results through the block manager when the Akka frame size is exceeded

- Reverts Shark PR #98
- Relevant commit on the Spark side: apache/incubator-spark@c75eb14
Merge pull request #187 from harveyfeng/mj-bug-swat

Revert to using RDD#collect() for map joins,
Merge remote-tracking branch 'ampshark/master' into partition-opt
Account for new Spark HadoopRDD API.
Also, for non-partitioned tables stored in Hadoop, moves row deserialization from processPartition() to preprocessRDD(). This makes it more consistent with partitioned table reads/processing, and allows us to annotate HiveConf as transient, which should reduce Spark task sizes.