lzo文件的并行map处理

简介:
    Hadoop集群中启用了lzo后,还需要一些配置,才能使集群能够对单个的lzo文件进行并行的map操作,以提升job的执行速度。
   首先,要为lzo文件创建index。下面的命令对某个目录里的lzo文件创建index:
 
  1. $HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/lib/hadoop-lzo-0.4.10.jar com.hadoop.compression.lzo.LzoIndexer /log/source/cd/ 
   使用该命令创建index要花些时间的,我一个7.5GB大小的文件,创建index,花了2分30秒的样子。 其实创建index时还有另外一个参数即com.hadoop.compression.lzo.DistributedLzoIndexer。两个选项可以参考:https://github.com/kevinweil/hadoop-lzo,该文章对这两个选项的解释,我不是很明白,但使用后一个参数可以减少创建index时所花费的时间而对mapreduce任务的执行没有影响。如下:
 
  1. $HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/lib/hadoop-lzo-0.4.10.jar com.hadoop.compression.lzo.DistributedLzoIndexer /log/source/cd/  
   然后,在Hive中创建表时,要指定INPUTFORMAT和OUTPUTFORMAT,否则集群仍然不能对lzo进行并行的map处理。在hive中创建表时加入下列语句:
 
  1. SET FILEFORMAT      
  2. INPUTFORMAT "com.hadoop.mapred.DeprecatedLzoTextInputFormat"   
  3. OUTPUTFORMAT "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat"; 
   执行了这两步操作后,对hive执行速度的提升还是很明显的。在测试中,我们使用一个7.5GB大小的lzo文件,执行稍微复杂一点的Hive命令,使用上述配置后仅需34秒的时间,而原来要180秒。

本文转自 li_qinshan 51CTO博客,原文链接:http://blog.51cto.com/share/663555
相关文章
|
JavaScript
vue尚品汇商城项目-day07【52.打包文件,处理map文件】
vue尚品汇商城项目-day07【52.打包文件,处理map文件】
123 3
|
Java
Java【代码分享 11】yaml配置List和Map参数对象的配置信息及类文件实例分享(效仿GatewayDynamic+DynamicDataSource的注入方法)
Java【代码分享 11】yaml配置List和Map参数对象的配置信息及类文件实例分享(效仿GatewayDynamic+DynamicDataSource的注入方法)
647 0
|
Java
【Java代码】反射机制处理传递给mapper文件的非Map类型参数对象(指定属性为空则设置默认值)
【Java代码】反射机制处理传递给mapper文件的非Map类型参数对象(指定属性为空则设置默认值)
192 0
|
Java 数据库连接 mybatis
mybatis映射文件使用Map
mybatis映射文件使用Map
306 0
|
存储 程序员 编译器
STM32的内存管理相关(内存架构,内存管理,map文件分析)
STM32 的内存架构,内存管理以及 map 文件分析
596 0
STM32的内存管理相关(内存架构,内存管理,map文件分析)
无法为JSP编译类:无法解析类型java.util.Map $ Entry从所需的.class文件间接引用它
无法为JSP编译类:无法解析类型java.util.Map $ Entry从所需的.class文件间接引用它
281 0
|
JSON Go 数据格式
【GO】json文件解码为map和结构体
【GO】json文件解码为map和结构体
330 0
【GO】json文件解码为map和结构体
|
JSON Go PHP
【GO】编码map为json文件
【GO】编码map为json文件
275 0
【GO】编码map为json文件