hive使用版本:
在Hive v0.7之前,需要给出MapJoin的指示,Hive才会提供MapJoin的优化。Hive v0.7之后的版本已经不需要给出MapJoin的指示就进行优化
MapJoin :在Map阶段进行表之间的连接,节省Shuffle阶段时要进行的大量数据传输
MapJoin的实现方法:
1)在Map-Reduce的驱动程序中使用静态方法DistributedCache.addCacheFile()增加要拷贝的小表文件。 JobTracker在作业启动之前会获取这个URI列表,并将相应的文件拷贝到各个TaskTracker的本地磁盘上。2)在Map类的setup方法中使用DistributedCache.getLocalCacheFiles()方法获取文件目录,并使用标准的文件读写API读取相应的文件
此次出现的问题通过看报错信息 定位是由于mapjoin出现问题
set hive.auto.convert.join=true; //设置 MapJoin 优化自动开启
set hive.auto.convert.join=false; set hive.ignore.mapjoin.hint=false //默认会把join转换为map join,需要关闭时设置
set hive.exec.parallel&#