dianping / cosmos-hive

3 stars 5 forks source link

hive读取lzo文件问题 #9

Open lalaguozhe opened 11 years ago

lalaguozhe commented 11 years ago

hive在使用DeprecatedLzoInputFormat来读取LZO的文件时候,如果lzo.text.input.format.ignore.nonlzo设置为true(默认配置)时候,在select * from lzotable时候会读不出来数据,而在select count(1) from lzotable起job的时候可以读取数据,但是当lzo.text.input.format.ignore.nonlzo设置为false时候执行select * from lzotable能读取到数据,我们需要详细看下这个配置的作用,了解在select * 和 select count(1) 一个不起job,一个起job中为什么会有不同的作用

lalaguozhe commented 11 years ago

DeprecatedLzoTextInputFormat和LzoTextInputFormat中会使用到lzo.text.input.format.ignore.nonlzo,如果设置为true(默认值),会使得所有不是".lzo"的文件名结尾的文件都会被remove掉,如果设置为false, 则会用TextInputFormat来处理这些文件(非以.lzo结尾文件名的文件)同时会过滤掉.lzo.index结尾的文件,这样就可以同时处理lzo和非lzo文件。

参考: https://github.com/twitter/hadoop-lzo/blob/master/src/java/com/hadoop/mapred/DeprecatedLzoTextInputFormat.java https://github.com/twitter/hadoop-lzo/blob/master/src/java/com/hadoop/compression/lzo/LzoInputFormatCommon.java