`
samuschen
  • 浏览: 405547 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

SequenceFile的压缩和分片

    博客分类:
  • hive
阅读更多

Compressed Data Storage

 

Keeping data compressed in Hive tables has, in some cases, known to give better performance that uncompressed storage; both, in terms of disk usage and query performance.

You can import text files compressed with Gzip or Bzip2 directly into a table stored as TextFile . The compression will be detected automatically and the file will be decompressed on-the-fly during query execution. For example:

 

CREATE TABLE raw (line STRING)
   ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n';

LOAD DATA LOCAL INPATH '/tmp/weblogs/20090603-access.log.gz' INTO TABLE raw;

 

The table 'raw' is stored as a TextFile , which is the default storage. However, in this case Hadoop will not be able to split your file into chunks/blocks and run multiple maps in parallel. This can cause under-utilization of your cluster's 'mapping' power.

The recommended practice is to insert data into another table, which is stored as a SequenceFile . A SequenceFile can be split by Hadoop and distributed across map jobs (is this statement correct?) . For example:

 

CREATE TABLE raw (line STRING)
   ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n';

CREATE TABLE raw_sequence (line STRING)
   ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n'
   STORED AS SEQUENCEFILE;

LOAD DATA LOCAL INPATH '/tmp/weblogs/20090603-access.log.gz' INTO TABLE raw;

SET hive.exec.compress.output=true; 
SET io.seqfile.compression.type=BLOCK; -- NONE/RECORD/BLOCK (see below)
INSERT OVERWRITE TABLE raw_sequence SELECT LINE FROM raw;

INSERT OVERWRITE TABLE raw_sequence SELECT * FROM raw; -- The previous line did not work for me, but this does.

The value for io.seqfile.compression.type determines how the compression is performed. If you set it to RECORD you will get as many output files as the number of map/reduce jobs. If you set it to BLOCK, you will get as many output files as there were input files. There is a tradeoff involved here -- large number of output files => more parellel map jobs => lower compression ratio.

分享到:
评论

相关推荐

    MapReduceV2笔记

    在map阶段,系统将输入数据划分成小的数据块(分片),然后对每个分片执行map函数,该函数将数据解析为键值对的形式。之后,Shuffle阶段负责将map阶段的输出结果进行排序和分组,并把相同键的数据分配给同一个reduce...

    hdfswriter.zip

    3. 写入:每个Task独立运行,将分片数据写入HDFS,支持TextFile、SequenceFile等多种文件格式。 4. 验证:写入完成后,进行完整性校验,确保数据无丢失。 5. 关闭:关闭HDFS连接,释放资源。 四、配置详解 ...

    Hadoop: The Definitive Guide 3rd_edition

    介绍了压缩、编解码器(Codecs)以及它们如何与MapReduce任务中的输入分片一起工作。Writable接口和Writable类是Hadoop序列化框架的核心,书中也介绍了如何实现自定义的Writable类。同时,本书还探讨了基于文件的...

    Hadoop权威指南(中文版)2015上传.rar

    输入分片与记录 文本输入 二进制输入 多种输入 数据库输入(和输出) 输出格式 文本输出 二进制输出 多个输出 延迟输出 数据库输出 第8章 MapReduce的特性 计数器 内置计数器 用户定义的Java计数器 用户定义的...

    Hadoop权威指南 第二版(中文版)

     输入分片与记录  文本输入  二进制输入  多种输入  数据库输入(和输出)  输出格式  文本输出  二进制输出  多个输出  延迟输出  数据库输出 第8章 MapReduce的特性  计数器  内置计数器  用户定义的...

    Hadoop权威指南---中文版归纳.pdf

    - **次要数据的分布**:数据分区和分片策略。 8. **Hadoop集群的安装与管理** - **集群搭建**:包括硬件选择、软件安装和配置。 - **监控和维护**:监控工具的使用,故障排查和维护技巧。 9. **生态系统工具** ...

    大数据方向学习课程体系

    - 理解Hadoop集群的工作机制,如数据分片、任务分配等。 3. **Hadoop分布式文件系统:架构和设计** - 深入了解Hadoop分布式文件系统(HDFS)的架构,包括NameNode和DataNode的角色与职责。 - 掌握HDFS的设计原则和...

    精品专题(2021-2022年收藏)spark的优化控制数据分区和分布.doc

    RDD的分区(分片)允许数据在集群中并行处理,减少了网络传输的需求。例如,在执行sum操作时,每个分区内的数据先进行局部求和,然后将结果传输到主节点进行全局求和,这样网络开销就很小。 Spark优化网络传输的一...

    SQOOP导入和导出参数.pdf

    - **--boundary-query**:边界查询,用于创建分片(InputSplit),提高导入效率。 - **--columns,col,col…>**:从表中导出指定的一组列的数据。 - **--delete-target-dir**:如果指定目录存在,则先删除掉。 - **--...

    大数据面试题

    - 输入文件分片。 - 读取数据。 - 执行自定义Map函数。 - 对键值对排序和分组。 - 输出键值对。 通过以上知识点的详细介绍,可以全面地了解大数据面试中涉及到的主要技术和概念,有助于更好地准备面试。

Global site tag (gtag.js) - Google Analytics