Oh, good catch Brock Noland. I think the responsibility lies with Hive because, in this case, the RecordReader is being consumed outside of the MapReduce Framework context. I don't know where Hive should initialize the RecordReader – my patch may result in a double-initialize for the mapreduce case, but corrects the problem for the local query. I think, somehow, processLocalCmd needs to indicate to HiveHBaseTableInputFormat that its RecordReader is being consumed outside of MapReduce. Perhaps you can advise?