spark trouble shooting之过滤掉gzip不能解压的错误文件

简介明了添加如下配置:

--conf spark.files.ignoreCorruptFiles=true

如果大家对怎么找到这个问题,以及最终解决的全过程感兴趣,请继续往下看:
在大数据处理过程中,必然会存在这样的问题,要处理的源文件可能由于网络传输等各种原因导致上传上来的文件不完整,那么遇到这种问题该如何处理呢?
如题在处理大数据问题时候,由于读取gzip文件使用的是如下代码来读取的:

#FilePaths为文件读取的路径
 lines = sc.textFile(FilePaths)

由于FilePaths路径下面的文件众多,在我的项目中一个文件夹下有7000个文件,再上传过程中,每个一段时间就会有个别文件上传或者什么原因,导致.gz文件不完整,从而不能解压
如图1.点击err.log查看错误原因
在这里插入图片描述
图2位错误原因:
在这里插入图片描述
可以初步猜测可能是*.5328.gz文件不完整导致的,那么就用命令

#将文件下载到本地服务器上
hadoop fs -get oss://sssss5328.gz ./

然后利用如下命令解压

gunzip xxxx5328.gz

得到如下显示:
gzip: xxxx_5328.log.gz: invalid compressed data–format violated
由此可断定就是gz文件错误导致的,那么如何解决呢?
方案1.自己写代码排除错误的gz,思路如下:
1.遍历文件夹下的所有文件:
sc.textFile()报错,在catch中删除该文件
2.删除完错误文件以后,在进行具体的逻辑操作

方案2.推荐
通过查看google查看:
https://gist.github.com/jfrazee/a6421d0b7c1b0ec26c07
文中提到修改一个配置就可以跳过错误文件:
原文如下:

your method hava an error where you deal with a big data

you can also use this conf to do it。
.set(“spark.files.ignoreCorruptFiles”, “true”)

翻译过来就是我可以在sparkConf中这么设置

参考上面的提醒,我在spark-submit脚本上添加了如下配置,果然跳过了不全的gzip文件,
添加的配置为:

--conf spark.files.ignoreCorruptFiles=true

修改前的spark-submit脚本如下:

spark-submit --deploy-mode cluster --master yarn --conf spark.executor.memoryOverhead=2000 --conf spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version=2 --conf spark.network.timeout=300s --conf spark.executor.heartbeatIntervals=100s oss://taobao-com/test_jar/test.py 2020031102 1

修改后如下:

spark-submit --deploy-mode cluster --master yarn --conf spark.executor.memoryOverhead=2000 --conf spark.files.ignoreCorruptFiles=true --conf spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version=2 --conf spark.network.timeout=300s --conf spark.executor.heartbeatIntervals=100s oss://taobao-com/test_jar/test.py 2020031102 1
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值