继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

孤独观测者
关注TA
已关注
手记 2
粉丝 6
获赞 2

课程名称: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接口,实现序列化。    


        以上是今天学习所得。

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

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

打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP