lzo + hive1.x测试

(一)环境:

hadoop 2.8.1
hive 1.2.2

   core-site.xml 配置项

<property>
  <name>io.compression.codecs</name>
  <value>org.apache.hadoop.io.compress.GzipCodec,
           org.apache.hadoop.io.compress.DefaultCodec,
           org.apache.hadoop.io.compress.BZip2Codec,
           com.hadoop.compression.lzo.LzopCodec,
           com.hadoop.compression.lzo.LzoCodec
  </value>
</property>    

<!-- lzop -->
<property>
   <name>io.compression.codec.lzo.class</name>
   <value>com.hadoop.compression.lzo.LzopCodec</value>
</property>

  

    mapred-site.xml 配置项

<!--设置map中间结果使用 lzop 压缩-->
<property> 
    <name>mapreduce.map.output.compress</name> 
    <value>true</value> 
</property> 

<property>
   <name>mapreduce.map.output.compress.codec</name>
   <value>com.hadoop.compression.lzo.LzopCodec</value>
</property>

<!--设置map/reduce 整个过程使用 lzop 压缩 -->
<property>
    <name>mapreduce.output.fileoutputformat.compress</name>
    <value>true</value>
</property>

<!-- lzop -->
<property>
   <name>mapreduce.output.fileoutputformat.compress.codec</name>
   <value>com.hadoop.compression.lzo.LzopCodec</value>
</property>

(二)

1.hive建表sql

CREATE TABLE `lzo5`(
  `uuid` string)
STORED AS 
INPUTFORMAT 'com.hadoop.mapred.DeprecatedLzoTextInputFormat' 
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'

2.创建uuid.txt文件,放1行数据

uuid1

3.lzop创建lzo文件

lzop uuid.txt

4.hive load数据

load data inpath "/home/hadoop/uuid.txt.lzo" into table lzo5;

5.hive查询,查看结果是1(正确)

select count(1) from lzo5;

6.给hive表lzo5路径下的lzo文件,创建lzo索引

$HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/share/hadoop/common/hadoop-lzo-0.mmon/hadoop-lzo-0.4.21-SNAPSHOT.jar com.hadoop.compression.lzo.DistributeddLzoIndexer  hdfs://hd1:9000/user/hive/warehouse/lzo5

7.查看索引生成情况

hdfs dfs -ls hdfs://hd1:9000/user/hive/warehouse/lzo5

 

 

8.再次查询sql,查看结果是1(正确)

select count(1) from lzo5;

(三)如何知道lzo index是否生效?

创建一个lzo文件,比hdfs的block size略大一点,分别在无索引和有索引两种场景下测试,看map数

  • 无索引的map数是1,因为lzo无索引不可split,
  • 有索引的map数是lzo文件大小 / block size 个, 因为lzo + index后支持split

 (四)对比结果:

block size是128M,生成的lzo文件是370M

无索引和有索引的执行时间如下,有索引的查询略快一点:

 

 无索引,map数1个

 

有索引的,map数3个(index后,支持split)


 

猜你喜欢

转载自coderlxl201209164551.iteye.com/blog/2413111
LZO
今日推荐