The splits are going to get serialized and deserialized. As it is now it won't work as jobConf will always be null. We might as well compute the locations in getSplits(), where the job conf is readily available. I already had added locations as a member of the split and it gets serialized and deserialized correctly.