如何清洗存储在hadoop(HDFS)中的原始数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何清洗存储在hadoop(HDFS)中的原始数据相关的知识,希望对你有一定的参考价值。
存储在hadoop集群HDFS文件系统中的原始数据,如何进行数据清洗,数据预处理。数据清洗工具有哪些?可以用Python对HDFS上的数据进行清洗吗?在网上看可以利用MapReduce、spark、hive、Python。应该使用哪个工具更合理?
参考技术A 都可以,看你自己用哪个顺手目前主流的会使用spark
HDFS文件压缩
起因: 集群磁盘剩余空间不足。
删除了存储在HDFS上的,一定时间之前的中间结果,发现并不能释放太多空间,查看计算业务,发现,每天的日志存在数量竟然是10份。/惊恐
/a/log=20180101 #每日原始日志
/b/log=20180101 #每日原始日志,做了清洗
/c/log=20180101 #清洗后的日志移到这里使用
/opt/backup/log=20180101 每日原始日志压缩
四个地方存储了原始日志(每天30G左右),由于所有目录都是3个副本,导致HDFS上几乎相同的文件存了9份(270G),一份本地压缩(5G)
由于都是文本文件,压缩率比较高,就想把其中不常用的目录下的文件拉下了,压缩,放回去。
------------------正文---------------------
第一版操作如下:
1、获取文件 hadoop fs -get /aa/test/xxxx.log 2、压缩 tar -zcvf xxxx.log.tar.gz xxxx.log 3、上传 hadoop fs -put xxxx.log.tar.gz /aa/test/ 4、删除本地临时文件 rm * 5、删除hdfs上文件 hadoop fs -rm /aa/test/xxxx.log
可以执行,但是很慢。
反思一下:
一个文件30G需要如下这么多时间: 从hdfs拉到本地: 10 m 压缩 : 30+ m 上传到hdfs: 10 m
时间太长,花很长的时间把文件来下来压缩了,下次突然要用,可能来不及解压缩。。。
以上是关于如何清洗存储在hadoop(HDFS)中的原始数据的主要内容,如果未能解决你的问题,请参考以下文章