赞
踩
1. 任务背景
近日有个项目任务,要求读取压缩在Zip中的百科HTML文件,经分析发现,提供的Zip文件有如下特点(=>指代对应解决方案):
(1) 压缩为分卷文件 => 只需将解压缩在同一目录中的一个分卷zip即可解压缩出整个文件
(2) 压缩文件中又包含不同的两个文件夹,且各包含n个小zip文件,小zip文件中包含目录及对应的HTML文本文件
采用第一方案:依次解压缩各小zip文件,存放在一个目录中,然后上传到HDFS中
存在问题:每个小zip都包含上万个小文件,按照第一方案解压缩,耗费的时间太太太多了
(3) 解析的zip存在多文件的情况
(4) 数据总量共计50W
2. 优化方案
直接上传小zip文件,然后让Spark直接从zip文件中读取HTML文本,再使用jsoup解析,并存储至elasticsearch中。
实现过程中有一处需要注意! => 解析zip会遍历的ZipEntry,会识别文件夹和文件夹下的文件,即文件夹和文件在ZipEntry中被当成同类对象来对待。
例1:本地解析zip压缩文件demo
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。