大数跨境
0
0

教你一招 | Hadoop小文件合并

教你一招 | Hadoop小文件合并 CDA数据分析师
2016-04-19
0
导读:在实际项目中,输入数据往往是由许多小文件组成

微信添加CDA为好友(ID:joinlearn),拉你入500人数据分析师交流群,点击阅读原文可查看CDA数据分析师交流群规范与福利,期待你来~

原文:http://www.cnblogs.com/codeOfLife/p/5406153.html

1、背景

在实际项目中,输入数据往往是由许多小文件组成,这里的小文件是指小于HDFS系统Block大小的文件(默认128M), 然而每一个存储在HDFS中的文件、目录和块都映射为一个对象,存储在NameNode服务器内存中,通常占用150个字节。 如果有1千万个文件,就需要消耗大约3G的内存空间。如果是10亿个文件呢,简直不可想象。所以在项目开始前, 我们选择一种适合的方案来解决本项目的小文件问题

2、介绍

本地 D:\data目录下有 2012-09-17 至 2012-09-23 一共7天的数据集,我们需要将这7天的数据集按日期合并为7个大文件上传至 HDFS

3、数据

本地 D:\data目录下的所有数据,如下图所示,数据地址


4、分析

基于项目的需求,我们通过下面几个步骤完成

1、获取 D:\data目录下的所有日期路径,循环所有日期路径,通过globStatus()方法获取所有txt格式文件路径。

2、最后通过IOUtils.copyBytes(in, out, 4096, false)方法将数据集合并为大文件,并上传至 HDFS

5、实现

自定义RegexAcceptPathFilter类实现 PathFilter,比如只接受D:\data\2012-09-17日期目录下txt格式的文件


实现主程序 list 方法,完成数据集的合并,并上传至 HDFS


6、一些运行代码


7、结果



文 | 刘超

来源 | 博客园

责任编辑 | 李佳燕


点击阅读原文了解经管之家商学院



【声明】内容源于网络
0
0
CDA数据分析师
🌸全国30万数据分析从业人员,有10万在CDA数据分析师 🌺CDA会员俱乐部有1000个数据库,成为持证人即可获得相关数据信息 🌹未来两样东西最有价值:一个是数据,一个是GPU
内容 9451
粉丝 0
CDA数据分析师 🌸全国30万数据分析从业人员,有10万在CDA数据分析师 🌺CDA会员俱乐部有1000个数据库,成为持证人即可获得相关数据信息 🌹未来两样东西最有价值:一个是数据,一个是GPU
总阅读1.4k
粉丝0
内容9.5k