hive与spark合并小文件,将大文件打碎成小文件
场景一:将小文件合并成大文件。
mro_hour_test表每个分区有几千个1m未压缩小文件,
以下语句是将几千个文件在输入时(map阶段)合并成150M一个的文件,插入到mro_hour_test_cp表中,
每个150M文件将会压缩成每个30M左右的gz文件。
如果 mro_hour_test表每个分区有几千个1m大小的gz文件,在插入到mro_hour_test_cp表时,会被合并成每个150M的gz文件。
set hive.hadoop.supports.splittable.combineinputformat=true;
set mapred.max.split.size=150000000;
set mapred.min.split.size.per.node=150000000;
set mapred.min.split.size.per.rack=150000000;
set mapred.max.split.size.per.node=150000000;
set mapred.max.split.size.per.rack=150000000;
set hive.exec.compress.output=true;
set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;insert overwrite table mro_hour_test_cp partition(p_hour='${v_day}')
select
manufactorid ,
objdifference ,ltescthermalnoisepower
from mro_hour_test where p_hour='${v_day}' ;load data inpath 'hdfs://hbscjq1/user/nokia_sd/hive_db/mro_hour_test_cp/p_hour=${v_day}' OVERWRITE into table mro_hour_test partition(p_hour='${v_day}');
以上语句将 mro_hour_test 表中小文件合并成大文件,然后插入到 mro_hour_test_cp表中。
之后再将mro_hour_test_cp表中合并后的大文件load回mro_hour_test 表中,替换了小文件。
*** 注:以上语句不能将大文件打碎成小文件。***
场景二:将大文件打碎成小文件
mro_hour_test表每个文件是1G的gz文件,需要用distribute by rand() 强制启动shuffle 使数据通过reduce,
因为reduce设置最大150M。所以数据通过reducer后被分割成150M大小。
##hive版:
set hive.exec.reducers.bytes.per.reducer=150000000;
set hive.exec.compress.output=true;
set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;insert overwrite table mro_hour_test_cp partition(p_hour='${v_day}')
select
manufactorid ,
....
ltescthermalnoisepower
from mro_hour_test where p_hour='${v_day}' distribute by rand();
#--------------
以下语句可将小文件合并成1G的文件。(如果只是合并文件推荐用 “场景一”hive版的效率好,因为不用启动reduce)
也可将大文件如每个文件10G大小,拆分成1G的文件。
参数 830000000 是830M,但一般情况下spark会把结果文件合并成900多M。
以下语句适合解决:spark设置分区太多,造成很多小文件情况。
##spark版:
spark-sql \
...
--conf "spark.sql.adaptive.enabled=true" \
--conf "spark.sql.adaptive.shuffle.targetPostShuffleInputSize=830000000" \
--hiveconf hive.exec.compress.output=true \
--hiveconf mapred.output.compress=true \
--hiveconf mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec \
--principal nokia_sd@BCHKDC -e "insert overwrite table TD_NS_MR_LOCATE_H
SELECT
groupid,
....
null issame
FROM TD_NS_MR_LOCATE_SRC_H WHERE ds='日期' distribute by rand();
";
注:如果有计算,有where条件过滤,spark启动了 shuffle,就不需要写 distribute by rand()
场景三:计算结束时合并小文件。
set hive.exec.reducers.bytes.per.reducer=512000000;set hive.merge.mapfiles=true;
set hive.merge.mapredfiles=true;
set hive.merge.size.per.task=512000000;
set hive.merge.smallfiles.avgsize=512000000;insert into result_table
select 复杂计算 from source_table where 条件可过滤大量记录;
在reduce时“条件过滤了大量记录”,因为每个reduce最大接收512M的输入数据,过滤大量记录后,假如每个reduce结果文件只有100M大小。
set hive.exec.reducers.bytes.per.reducer=512000000;
以下语句在reduce后写文件时,判断如果文件小于512M,将会再次启动map将100M的文件合并成512M.
(有的结果文件可能会超过512M,假如reduce后每个文件100M左右,有可以会出现接近600M的文件)
set hive.merge.mapfiles=true;
set hive.merge.mapredfiles=true;
set hive.merge.size.per.task=512000000;
set hive.merge.smallfiles.avgsize=512000000;
hive与spark合并小文件,将大文件打碎成小文件相关推荐
- cdr文件太大怎么转成小内存 CDR文件太大打不开怎么办
使用cdr软件制作图形时,常常会将其制作成矢量图形.虽然矢量图形有着不失真.可任意放大等优点,但常会导致cdr文件过大.那么,cdr文件太大怎么转成小内存,CDR文件太大打不开怎么办?本文将会针对以上 ...
- 压缩pdf大小的方法?怎样压缩pdf大小?pdf文档怎么压缩?pdf文件太大怎么压缩?pdf文件太大怎么压缩成小内存?如何降低pdf文件大小?怎么把pdf文件压缩到指定大小?压缩pdf的简单方法
pdf在线压缩大小?在工作中需要处理大量PDF文件,我们通常要对PDF文件进行压缩处理.那么问题来了,PDF文件该怎么压缩呢?可能很多人都不知道具体的操作方法,今天要分享给大家的正是PDF压缩的方法, ...
- 视频文件太大如何压缩变小?
视频文件太大如何压缩变小?任何文件如果太大就会给使用带来麻烦,尤其是视频文件,一两分钟的视频可能就有几十mb,不仅占用大量的存储空间,发送给别人的时候也更加的费时,这时候就需要将较大的视频压缩变小,提 ...
- ppt文件太大怎么压缩变小,4个方法快速学
ppt文件太大怎么压缩变小?现在都流行线上教学,很多教学的课件都是使用PPT 进行的.但是这些PPT体积往往都非常的大,如果是那种使用时间较长的电脑光是打开这类PPT就非常卡顿了.有的甚至就无法打开这 ...
- word文件太大怎么压缩变小?
word文件太大怎么压缩变小?word文档是各单位使用率很高的一种文件,而长期使用word文档的人,不免遇到word文档体积大,word文档积累过多导致的占内存现象的发生.这时候我们把word文档进行 ...
- word文件太大怎么压缩变小
word文件太大怎么压缩变小?如果word文件包含太多内容,体积就会很大,如果超过100M就不能通过微信发送给别人,这就比较麻烦了.有的朋友会将word文件打成压缩包(如:zip或rar),这样虽然可 ...
- 视频文件过大怎么压缩变小?
昨天上传了一个视频,想保存起来,不过视频文件有点大,占用空间很大,小编查看了进度条很慢,视频文件过大怎么压缩变小?那么视频压缩之后像素会不会变模糊,这个不用担心,这就给大家演示一下. 1.首先打开进入 ...
- mp4文件太大怎么压缩变小?
mp4文件太大怎么压缩变小?mp4是视频文件的格式,平时我们接触到的视频文件大都是这种格式的.大家也都知道视频属于体积较大的文件,有时候一个一分钟的视频大小可能达到上百M,视频文件太大会影响正常的使用 ...
- html文件很大,webpack打包之后的文件过大如何解决
本文主要和大家介绍了webpack打包之后的文件过大的解决方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧,希望能帮助到大家. 以前一直使用 create-react- ...
最新文章
- 一份比较详细的 webpack 4.x 手工配置基础开发环境 附源码
- Java虚拟机学习(3): 类加载机制
- autojs 如何获取控件的desc_Autojs Pro中,常用的几个选择器搜索接口的区别-技术类-雨后春笋...
- [20150611]优化sql遇到问题.txt
- jwt令牌_JWT令牌的秘密轮换
- 时速云入选2018中国企业服务创新成长50强
- ZFNet: Visualizing and Understanding Convolutional Networks
- 数组常用方法 (es4,es5,es6)
- Java中Character类的概述及其详解
- 太湖之光超级计算机应用最高奖,世界最快超级计算机“神威·太湖之光”获得100多项应用成果...
- python爬取58同城租房信息
- jQuery诞生记-原理与机制
- 【小白笔记】目标跟踪(Unveiling the Power of Deep Tracking)论文笔记
- Android客户端与PC服务器如何实现Socket通信
- VS中实时获取SVN的版本号并写入到AssemblyInfo.cs中(C#)
- Matlab将连续图片处理为视频
- 读SQL进阶教程笔记14_SQL编程要点
- 对递归的理解以及怎么写递归程序
- 信息学奥赛一本通 1198:波兰表达式 | OpenJudge NOI 2.2 1696:波兰表达式
- 使用bs4爬取软科大排名并保存在数据库
热门文章
- 加拿大计算机系,美加转学等等
- VR减肥、味觉减肥全是噱头!从神经和基因层面来看,真正的黑科技减肥方法是这两种!...
- Python 中求小于这个数的所有素数
- 在进程中运行新代码 execl、execle、execlp、execv、execve和execvp函数
- 2022最新隧道人员精确定位系统方案介绍
- 变频器由计算机控制,变频器练习题
- Nginx网络负载均衡,负载均衡,网络负载,网络均衡
- 蓝牙开关与手机蓝牙开关联动
- 如何用python画一束花_武汉早樱开了!却没有赏樱人群,那就用python画一束最美的樱花...
- QQ资料一键清空工具下载