博客
关于我
Hive实践分享存储和压缩的坑
阅读量:664 次
发布时间:2019-03-15

本文共 1674 字,大约阅读时间需要 5 分钟。

优化Parquet存储与Snappy压缩的配置及数据导出处理

在实际应用中,Hive作为一款流行的结构化数据处理框架,其在存储和压缩方面的配置对性能优化具有重要作用。本文将从Hive表的存储结构设计、压缩格式设置及其在数据导出过程中的应用进行详细分析。

一、创建 Parquet 存储结构的表

支持Parquet存储格式的Hive表可以通过以下命令创建:

CREATE TABLE CRM.DEMO (A INT) STORED AS PARQUET;

这一命令ißư dụng để定义一个名为CRM.DEMO的表,该表的数据类型为整数(A INT),并指定使用Parquet作为存储格式。

二、确认存储格式

为了确认表的存储格式,可以使用DESCRIBE FORMATTED命令:

DESCRIBE FORMATTED crm.demo;

执行该命令后,系统将返回表的详细信息,其中包括存储格式、序列化库等内容,输出结果如下:

# Storage Information          SerDe Library:          org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDeInputFormat:                 org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormatOutputFormat:               org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat

三、配置 Snappy 压缩格式

Snappy是Hive支持的一种高效压缩格式,常用于数据存储和传输浓缩。要在Parquet表中设置Snappy压缩格式,可以通过以下命令实现:

ALTER TABLE crm.demo SET TBLPROPERTIES ('parquet.compression'='SNAPPY');

或者在导入数据时可同时指定:

SET parquet.compression=SNAPPY;

四、解决 Snappy 压缩下数据分析问题

在实际应用中,当使用Snappy压缩格式时,导出的数据文件若以gz 结束,大量数据直接压缩可能导致分析效率降低。为了解决这一问题,可以采取以下方法:

  • 压缩工具的局限性

    第一种方法是安装Snappy解压工具。然而,由于权限限制,这一方法在实际应用中难以实施。

  • 动态调整压缩格式

    第二种方法是更改数据导出时的压缩格式。在导出数据时,可以通过结合文件大小和数据类型,选择最优的压缩格式。

  • 五、优化导出压缩格式的实现

    在Hive的MapReduce作业中,可以通过以下方式配置导出过程中的压缩:

  • 作业数据压缩

    mapred.map.output.compression.codec中设置输出数据的压缩格式:

    set mapred.map.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;
  • 最终文件压缩

    对最终表数据进行压缩,选择Gzip或其他合适的压缩格式:

    set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;

    该设置会使得最终导出的数据文件以.gz 格式保存。

  • 文件解压与分析

    下次在本地计算机上可以通过解压工具直接将.gz 文件转换为可分析的平面文件,从而在Excel等工具中进行数据可视化。

  • 六、总结

    从存储与压缩的配置角度来看,Hive对Parquet存储格式和多种压缩格式的支持为数据管理提供了高度的灵活性。实践中需要根据实际数据规模和查询需求,结合压缩类型与解压工具的效率,在存储和压缩之间进行权衡。这不仅关系到数据存储的空间效率,也直接影响到后续的数据处理和分析效率。

    转载地址:http://sdyqz.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现euclideanDistance欧氏距离算法(附完整源码)
    查看>>
    Objective-C实现euler method欧拉法算法(附完整源码)
    查看>>
    Objective-C实现eulerianPath欧拉路径算法(附完整源码)
    查看>>
    Objective-C实现eval函数功能(附完整源码)
    查看>>
    Objective-C实现Exceeding words超词(差距是ascii码的距离) 算法(附完整源码)
    查看>>
    Objective-C实现extended euclidean algorithm扩展欧几里得算法(附完整源码)
    查看>>
    Objective-C实现Factorial digit sum阶乘数字和算法(附完整源码)
    查看>>
    Objective-C实现factorial iterative阶乘迭代算法(附完整源码)
    查看>>
    Objective-C实现factorial recursive阶乘递归算法(附完整源码)
    查看>>
    Objective-C实现FigurateNumber垛积数算法(附完整源码)
    查看>>
    Objective-C实现Gale-Shapley盖尔-沙普利算法(附完整源码)
    查看>>
    Objective-C实现hamiltonianCycle哈密尔顿图算法(附完整源码)
    查看>>
    Objective-C实现hamming numbers汉明数算法(附完整源码)
    查看>>
    Objective-C实现hanning 窗(附完整源码)
    查看>>
    Objective-C实现hanoiTower汉诺塔算法(附完整源码)
    查看>>
    Objective-C实现hardy ramanujana定理算法(附完整源码)
    查看>>
    Objective-C实现highest response ratio next高响应比优先调度算法(附完整源码)
    查看>>
    Objective-C实现hill climbing爬山法用来寻找函数的最大值算法(附完整源码)
    查看>>
    Objective-C实现hornerMethod霍纳法算法(附完整源码)
    查看>>
    Objective-C实现Http Post请求(附完整源码)
    查看>>