为了账号安全,请及时绑定邮箱和手机立即绑定

【学习打卡】第1天 Spark 学习通用的数据处理技术

标签:
Spark

课程名称:Spark+ClickHouse实战企业级数据仓库

课程章节: 初识Grok通用数据解析器

主讲老师:xiaochen

课程内容:

今天学习的内容包括:

Grok数据解析器的使用——在生产环境中,日志的格式五花八门,大部分时候不会有结构化的日志数据,如果自定义数据解析器,灵活性不高,而Grok提供了灵活的数据解析格式,可以灵活的将日志数据进行解析,并最终得到结构化的日志数据,提供给数据端使用。

Grok工具类的封装——Grok解析器在使用过程中,有许多步骤是可以复用的,将其封装为工具类可以方便后续使用。

在Spark代码中使用Grok——Grok多用在数据解析,而在spark中对数据进行解析,可以提高性能。

课程收获:

        在Spark中使用Grok数据解析器,可以先封装一个UDF工具类,因为注册UDF函数的动作重复性很高,提前封装可以方便使用。在封装好Grok的UDF工具类后,在需要使用的地方进行调用。

        需要注意的是,利用Grok解析的日志,在DataFrame中是一个字段存储整个结构化日志信息,可读性差,需要我们手动将这个字段拆开,把一个日志字段拆为多个字段后,要调用dataframe的drop方法,把日志字段删除。

        在使用Grok的UDF时,有两个地方存在性能优化的可能,分别是读取Grok的patterns和调用compile生成Grok这两个地方。优化时可以将他们从UDF方法中提出来,在driver端执行,但这样做又会遇到两个问题

        一是cluster模式下,spark读取不到本地文件,这个问题,我们可以将文件存放在hdfs进行解决。

        二是Grok本提出UDF函数后,在driver端生成,但Grok对象无法序列化,这就导致UDF中无法在多节点使用Grok,解决方法是修改Grok源码,实现Serializable接口,实现序列化。    


        以上是今天学习所得。

https://img4.sycdn.imooc.com/62e8d0250001bdaf20571206.jpg

https://img3.sycdn.imooc.com/62e8d05e0001fd9421601380.jpg

点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消