spark 读取ftp_Spark读取双层ZIP压缩包

问题

项目中碰到一个新问题,需要利用Spark分析海量小文件,具体大概是这样的:

海量的双层压缩包:

数量可能几十万或更多,文件大小从几KB到几MB不等,可能是zip+zip压缩,也可能是zip+gz压缩。分析发现,外层的ZIP包中可能含有多个文件,内层的zip或gz包中只会有一个csv文件。

实际表头格式也有多种,但处理方法和具体业务结合的较多,本问不再赘述。

不同压缩方式的文件混在一起,无法在获取的时候自动分拣。

非主流的Spark使用方法:

由于存在一些现实因素,再加上担心hadoop对海量小文件支持的不好,因此实验环境是一个单机多进程(多个worker)的spark环境,文件存储在本地,而非HDFS,诸如newapihadoopfile等高大上的接口并没进行分析测试,但貌似整个apache生态圈都不太支持zip。

对于rdd和Dataframe的困惑:

过去提到Spark,接下来肯定是讨论rdd了。但Spark2.0之后,强化了Dataframe体系(DF),比如Spark机器学习的Mlib库,现在有两套接口,一套rdd的,一套DF的,而且官方更推荐使用后者。基于DF可以建立表,可以使用SQL,非常的方便,但我还不太熟悉这个体系。

对于本项目的情况,无论RDD还是DF体系都不能原生支持读取zip。但是都可以透明的读取gz,也就是把gz文件(目录)当作txt或csv等格式直接读取。(没卵用啊)

我的方案

搞了两种方案供大家参

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值