记一个压缩格式的问题

简介: 问题描述 Hive ORC table常规小文件过多问题,于是用Spark写了一个Application来自动的Merge分区数据,思路很简单大概就是 insert overwrite table partition (分区 XXX) select * from table where (分区 XXX)当然已经把该dataframe repartition到想要的目标并发度,来控制最终分区下的文件个数 但是发现生成的文件个数虽然是对的,但是最后整个分区的Size竟然几乎翻倍。

问题描述

Hive ORC table常规小文件过多问题,于是用Spark写了一个Application来自动的Merge分区数据,思路很简单
大概就是

insert overwrite table partition (分区 XXX) select * from table where (分区 XXX)
当然已经把该dataframe repartition到想要的目标并发度,来控制最终分区下的文件个数

但是发现生成的文件个数虽然是对的,但是最后整个分区的Size竟然几乎翻倍。

排查过程以及结论

怀疑是Spark SQL没有压缩或者压缩格式不对

https://stackoverflow.com/questions/48759909/how-to-check-if-zlib-compression-is-enabled-in-hive-tables

用这个链接的方式自查一下
发现 hive 生成的文件默认是zlib
而spark生成的文件默认是snappy

image

image

这个导致了最终文件大小相差较大

相关文章
|
10天前
|
Java
格式
局部变量和成员变量 1.定义的位置不一样【重点】 局部变量:在方法的内部 成员变量:在方法的外部,直接写在类当中 2.作用范围不一样【重点】 局部变量:只有方法当中才可以使用,出了方法就不能再用 成员变量:整个类全都可以通用。 3.默认值不一样【重点】 局部变量:没有默认值,如果要想使用,必须手动进行赋值 成员变量:如果没有赋值,会有默认值,规则和数组一样 4.内存的位置不一样(了解) 局部变量:位于栈内存 成员变量:位于堆内存 5生命周期不一样(了解) 局部变量:随着方法进栈而诞生,随着方法出栈而消失 成员变量:随着对象创建而诞生,随着对象被垃圾回收而消失 当方法的局部变量和类的成员变量重名
14 0
7zip压缩zip格式时文件名支持中文的设置
7zip压缩zip格式时文件名支持中文的设置
82 0
7zip压缩zip格式时文件名支持中文的设置
|
存储 编解码 算法
编码压缩介绍
压缩编码介绍,JPEG标准,H.264,AVS,预测,变换,量化,熵编码,环路滤波
99 0
1473. A + B 格式
1473. A + B 格式
67 0
|
API Android开发
Java字符串压缩(两种压缩方式)
第一种,只统计字符出现次数,比如aabcccccaaa,压缩成a5b1c5 思路:利用hashMap键的唯一性
977 0
|
监控 算法 Cloud Native
开发函数计算的正确姿势——使用 brotli 压缩大文件
函数计算对上传的 zip 代码包尺寸限制为 50M。某些场景中代码包中会超过这一限制,比如未经裁剪的 serverless-chrome,类似的还有 libreoffice ,此外常见的还有机器学习训练的模型文件。本文会比较几种常见的解决大文件的方案,并重点介绍借助 brotli 提高压缩比的方法。
开发函数计算的正确姿势——使用 brotli 压缩大文件
|
Serverless 对象存储 弹性计算
函数计算对文件进行压缩和解压缩使用总结
前言 函数计算具有弹性伸缩的能力,可以给用户带来免运维和毫秒级扩容的计算能力。 但是它也存在一些限制, 比如一个执行环境最大内存只有3G, 本文旨在进行总结一些函数计算在文件压缩和解压缩的一些实践案例, 希望能给大家抛砖引玉,引出更好的实践案例。
2861 0