map的中间结果也可以启用压缩,而且中间结果对输出结果是没有影响的:
hadoop-site.xml中:
<property> <name>mapred.compress.map.output</name> <value>true</value> <description>Should the outputs of the maps be compressed before being sent across the network. Uses SequenceFile compression. </description> </property> <property> <name>mapred.map.output.compression.codec</name> <value>org.apache.hadoop.io.compress.LzoCodec</value> <description>If the map outputs are compressed, how should they be compressed? </description> </property>
也可以hive-site.xml中配置:
<property> <name>hive.exec.compress.intermediate</name> <value>true</value> <description>Should the outputs of the maps be compressed before being sent across the network. Uses SequenceFile compression. </description> </property> <property> <name>hive.intermediate.compression.codec</name> <value>org.apache.hadoop.io.compress.LzoCodec</value> <description>If the map outputs are compressed, how should they be compressed? </description> </property>
或者直接在HIVE脚本中写:
set hive.exec.compress.intermediate=true;
set hive.intermediate.compression.codec="org.apache.hadoop.io.compress.LzoCodec";
中间结果的压缩,建议采用lzo,因为它速度比较快,不像其他压缩方式比较耗CPU。
当然,如果启用了lzo,也会有上面说的许可证的问题,要保证你的集群机器都单独安装了lzo压缩包。
需要注意的是,lzo在0.19.1中是存在的,但是在0.20之后,因为许可证问题被移除了,是需要单独安装的。
首先需要添加lzo codec,在hadoop-site.xml中添加:
<property> <name>io.compression.codecs</name> <value>org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.BZip2Codec,org.apache.hadoop.io.compress.LzoCodec</value> <description>A list of the compression codec classes that can be used for compression/decompression.</description> </property>
其他的压缩配置按照上面的写就OK。
配置完以后,可以在job.xml中查看运行的作业的配置是否启用了压缩,也可以使用
hadoop fs -cat 输出结果文件 | more
来查看是否启用压缩。因为输出结果文件的文件头是标注了文件的格式的,如key和value的类名,以及是否压缩。如果启用压缩,你能看到类似下面的输出:
SEQ"org.apache.hadoop.io.BytesWritableorg.apache.hadoop.io.Text*org.apache.hadoop.io.compress.DefaultCodec...
相关推荐
### 深入浅出Hive企业级架构优化 #### Hive概述 Apache Hive 是一个基于 Hadoop 的数据...总之,通过对 Hive 架构、SQL 语句、数据压缩以及分布式缓存等方面的综合优化,可以有效提升 Hive 在企业级应用中的表现。
Hive中,Map任务的数量由`mapred.min.split.size`和`mapred.max.split.size`这两个参数决定。默认情况下,`mapred.min.split.size`为1B,`mapred.max.split.size`为256MB,这意味着一个Map任务处理的数据量上限为256...
该参数决定了HDFS路径,用于存储不同map/reduce阶段的执行计划和这些阶段的中间输出结果,默认值为/tmp/<user.name>/hive。 8. hive.metastore.warehouse.dir 该参数决定了Hive默认的数据文件存储路径,通常为HDFS...
Hive 优化方法整理是 Hive 数据处理过程中的重要步骤,涉及到 Hive 的类 SQL 语句本身进行调优、参数调优、Hadoop 的 HDFS 参数调优和 Map/Reduce 调优等多个方面。 Hive 类 SQL 语句优化 1. 尽量尽早地过滤数据...
- **Hive中的压缩**: 设置表属性来指定压缩方法。 - **复杂类型**: - **举例**: 复杂类型的使用示例。 - **array类型**: 存储有序的元素集合。 - **map类型**: 存储键值对。 - **struct类型**: 存储命名字段。 ...
- **将数据插入到Hive表**:可以使用`INSERT INTO TABLE table_name [PARTITION (partition_spec)] SELECT ...`命令将数据从查询结果插入到Hive表中。 - **将查询结果写入文件系统**:通过`INSERT OVERWRITE ...
- 其他参数:如hive.exec.compress.output控制是否压缩输出,hive.auto.convert.join决定自动转换内连接的条件。 通过以上内容的学习,你将能熟练掌握Hive在大数据处理中的运用,理解其数仓设计原则,编写高效的...
排序后的数据在Map阶段进行局部join操作,然后在Reduce阶段对结果进行合并,这样可以进一步减少数据传输和处理的量。 6. Skew Join(倾斜join) 数据倾斜是指数据在分布上不均匀,导致某些节点上的处理任务远高于...
可以开启Hive的中间数据和最终数据压缩,使用`hive.exec.compress.output=true`和`hive.exec.compress.intermediate=true`,并选择合适的压缩编码器如LZO、GZIP或Snappy。 2. **处理数据倾斜**:数据倾斜发生在某些...
- **复杂数据类型** 包括:ARRAY、MAP、STRUCT和UNIONTYPE,它们可以存储结构化或半结构化的数据。 - **Hive类型转换** 在创建表或处理数据时,可能需要进行类型转换,这可以通过HQL的CAST函数实现。 3. **Hive...
7. HIVE 的MAP/REDUCE 41 7.1 JOIN 41 7.2 GROUP BY 42 7.3 DISTINCT 42 8. 使用HIVE注意点 43 8.1 字符集 43 8.2 压缩 43 8.3 count(distinct) 43 8.4 JOIN 43 8.5 DML操作 44 8.6 HAVING 44 8.7 子查询 44 8.8 ...
4. 内存调优:调整Hive的内存配置参数,如mapreduce.map.memory.mb和mapreduce.reduce.memory.mb,可以在一定程度上提升执行效率。 5. 视图与子查询:使用视图简化复杂查询,合理使用子查询可以避免多次扫描全表,...
- 除了设置 `hive.map.aggr`,还可以调整其他参数如 `hive.exec.parallel` 和 `hive.exec.compress.intermediate` 来并行执行任务和压缩中间结果。 13. **Hive 增加列**: - 可以使用 ALTER TABLE 命令向已有的表...
Hive高级知识部分主要讲解了Hive文件格式、压缩、复杂类型、Hive解释器、编译器、优化器和执行器等高级特性。Hive支持多种文件格式,包括文本文件、Parquet和ORC等列式存储格式。Hive中的压缩可以减少数据存储空间,...
Hive3引入了LLAP(Live Long and Process)模式,实现查询结果缓存,提高交互式查询性能;独立的Metastore服务提高了元数据管理的稳定性和可扩展性。 总结来说,Hive性能优化涉及多个层面,包括表结构设计、数据...
6. **Hive存储格式与压缩** - 行式存储与列式存储的对比; - 存储格式(TextFile、SequenceFile、RCFile、ORCFile、Parquet等); - 压缩格式的选择(gzip、bzip、snappy等); - 如何根据实际项目选择最合适的...
Hive的架构优化是课程的重点,包括降低IO负载、表分区、动态分区、压缩和分布式缓存等技术,以提升Hive的性能。 针对HQL的优化,课程将深入探讨具体的策略和方法,包括Map和Reduce的优化、数据倾斜问题的解决,以及...
- **Map端聚合**:启用`hive.map.aggr`选项,在Map端预先聚合数据,减少Shuffle阶段的数据量。 - **谓词下推**:设置`hive.optimize.ppd`为true,将过滤条件尽可能早地应用到数据上。 2. **Reduce阶段优化**: -...