发现我一个很大的问题,不喜欢看源代码,唉,静不下心来,浮躁。。。
继续上一篇文章,提到combinHiveinputformat,看不懂,没去仔细看。直接操作,把hive-site.xml中的此项值改为了hiveinputformat,发现hive sql语句执行的时候基本是按照文件个数(小文件1个文件对应1个map,大的切分了多个map,与之前看的hadoop分map的资料基本对应起来了)来分配map个数了。(888个小文件,894个map)
由此猜测combinehiveinputformat是先将所有的小文件进行合并,如果不超过某个值,则只启动1个map,超过某值则多个,这个值可能不是block size。试过600多m的文件3个map,800多m的文件4个map。可能还得结合文件个数来推测。如果600m是多个小文件+2个大文件,800多m是多个小文件+3个大文件,则有可能是合并小文件,大文件按blocksize切,待验证,看明白源码,估计就真相大白了。