java spark读写hdfs文件_Spark读取HDFS中的Zip文件

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

2b65ef29a5872cc0e4771c25889edd04.gif

你可能感兴趣的:(java,spark读写hdfs文件)