如何解析(读取)LZ4压缩格式的Spark EventLog日志

 为什么需要Spark Event Log?

        我们都知道Spark启动后会启动Spark UI,这个Spark UI可以帮助我们监控应用程序的状态。但是如果Spark应用跑完了,Spark UI就无法查看,如果Spark在执行过程中出了问题,我们没有办法去快速查找出问题的原因,所以我们需要把Spark Event持久化到磁盘,然后通过Spark History Server去读取Spark Event Log就可以重现运行时情况,可以快速的帮助我们分析问题。

为什么要解析(读取)EventLog日志文件?

通常我们通过Spark History Server WEB UI查看已经结束的Spark作业日志,但是有时候作业生成的EventLog 文件非常大,几G甚至几十G,导致Spark History Server无法解析展示,最近就发现在生产环境中生成了一个达27G的eventlog文件。经过在网上搜索找到了如下的解析读取办法。

编写Spark代码解析EventLog文件

一般为减少磁盘空间占用,eventlog一般以lz4格式压缩存储,本文提供的方法也是读取这种格式文件,因为非压缩格式文件可以直接查看。

import java.io.{FileInputStream, FileOutputStream}
import org.apache.commons.io.IOUtils
import org.apache.spark.io.LZ4CompressionCodec

val inFile = "local_lz4_event_log_file_path"
val outFile = "resolved_event_log_file_path"
val codec = new LZ4CompressionCodec(sc.getConf)
val is = codec.compressedInputStream(new FileInputStream(inFile))
val os = new FileOutputStream(outFile)
IOUtils.copyLarge(is,os)
os.close()
is.close()

        

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值