1. 空指针异常
问题分析:最初以为是配置文件中缺损了某个值,然后用vimdiff比对了hive0.9和hive0.12之间的配置差异,在排除了配置文件出错的可能性后,下载了源码来看
问题解决:主要还是按照这个wiki上的来解决https://issues.apache.org/jira/browse/HIVE-5515
2. Map重复读Hbase
这个问题其实由来已久,其实我看到最早在hive0.9就已经有了,太坑爹了!
问题分析:修改源码打成新jar包后,通过tasklog可以发现,每个map的startRow和endRow竟然是一样的,Hbase的数据被重复scan,直接会造成reduce的最终结果是真实值的map倍,故猜测BUG应该是 map切片Hbase的时候出错了
问题解决:在HiveHBaseTableInputFormat.java中getRecordReader方法里注释掉
// tableSplit = convertFilter(jobConf, scan, tableSplit, iKey,
// getStorageFormatOfKey(columnsMapping.get(iKey).mappingSpec,
// jobConf.get(HBaseSerDe.HBASE_TABLE_DEFAULT_STORAGE_TYPE, "string")));
然后bulid.xml那边添加