Flume 拦截器interceptor和选择器selector演示案例

本文介绍了如何利用Flume的拦截器(interceptor)和选择器(selector)对日志数据进行预处理和选择性分发。在大数据处理场景中,针对半结构化的日志数据,拦截器可以用于去除损坏数据和打标记,而选择器则用于依据特定条件将数据分发到不同的目的地。文中通过一个具体的案例,展示了如何编写拦截器代码,配置Flume日志采集,将数据存入HDFS,并验证处理结果。
摘要由CSDN通过智能技术生成

Flume 拦截器和选择器演示案例(interceptor、selector)

1. 背景

  1. 在大数据处理中,要处理的数据分为结构化,半结构化,非结构化数据。其中日志就是半结构化数据
  2. 当处理日志文件时,一般先使用flume或者其他方式将日志文件采集出来,一般是从日志系统中采集出来,然后存入到hdfs系统中。
  3. 当使用flume采集日志时,因为这是最原始的数据,很多时候需要对其进行一定的处理,这时候就需要用到拦截器,拦截器可以对数据做预处理。
  4. flume的每一条数据使用Event对象包装起来,event分为header和body,header中可以添加各种附加信息,打各种标记信息,后续流程可以用到如选择器。body中就是一个字节数组,也就是数据本身,一般日志信息都是一个字符串,body中就是字符串转换的字节数组。
  5. 当使用拦截器interceptor对数据进行预处理,例如去除损坏数据,打标记等工作处理之后。就可以使用选择器selector对数据进行选择性分发。

2. 案例

  1. 需求描述
  • 由于历史原因,来自小程序,app的日志缓和在日志服务器的一个日志目录中,无法通过文件名等很好区分,但日志中字段有差异,小程序日志中有openid字段,app日志中有appid字段。
  • 现在需要将这2种日志数据进行区分,分别存放到hdfs的不同目录下去。
  1. 环境准备
  • idea 2020
  • maven 3.6.3
  • pom
<dependencies>
        <dependency>
            <groupId>org.apache.flume</groupId>
            <artifactId>flume-ng-core</artifactId>
            <version>1.9.0</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <version>2.7.7</version>
        </dependency>

        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-sql_2.11</artifactId>
            <version>2.4.4</version>
        </dependency>


        <dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-library</artifactId>
            <version>2.11.12</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值