现象:
hive (gmall)> select * from ods_log; Time taken: 0.706 seconds, Fetched: 2955 row(s) hive (gmall)> select count(*) from ods_log; 2959
两次查询结果不一致。
原因:
select * from ods_log不执行MR *** 作,直接采用的是ods_log建表语句中指定的DeprecatedLzoTextInputFormat,能够识别lzo.index为索引文件。
select count(*) from ods_log执行MR *** 作,会先经过hive.input.format,其默认值为CombineHiveInputFormat,其会先将索引文件当成小文件合并,将其当做普通文件处理。更严重的是,这会导致LZO文件无法切片。
解决办法:
修改CombineHiveInputFormat为HiveInputFormat
hive (gmall)> set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)