lzo压缩时有一个索引文件。
当使用select * from xx 时, inputformat是使用建表时指定的DeprecatedLzoTextInputFormat,他可以识别到索引文件。
而使用select count(*) from xx时,使用的inputformat是先使用combinehiveinputformat(防止MR的时候都是小文件),他会把索引文件和数据文件合并,导致之后DeprecatedLzoTextInputFormat识别不到索引文件,然后误认为索引也是一条数据,导致条数会多一条。
条数不一致其实问题不大,这个主要影响的是索引文件不生效,印象效率!
所以可以SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat;
将combinehiveinputformat替换掉,让他不要先合并文件。