Flume抽取数据(包含自定义拦截器和时间戳拦截器)

server/2024/10/22 0:24:59/

 flume参考网址:Flume 1.9用户手册中文版 — 可能是目前翻译最完整的版本了icon-default.png?t=O83Ahttps://flume.liyifeng.org/?flag=fromDoc#要求:

使用Flume将日志抽取到hdfs上:通过java代码编写一个拦截器,将日志中不是json数据的数据过滤掉,只保留符合json格式的数据,抽出到hdfs中的数据要有日期路径

日志数据:

最终到hdfs上的数据格式:

 步骤:

①首先确保hdfs的服务是开启的

start-dfs.sh

②将使用java写好的jar包导入到flume的lib下

③编写json文件

#为各组件命名

a1.sources = r1

a1.channels = c1

a1.sinks = k1

#描述source

a1.sources.r1.type = TAILDIR

a1.sources.r1.filegroups = f1

a1.sources.r1.filegroups.f1 = /home/behavior/.*

a1.sources.r1.positionFile = /root/taildir_position.json

a1.sources.r1.interceptors =  i1

a1.sources.r1.interceptors.i1.type = cn.wolfcode.flume.interceptor.ETLInterceptor$Builder

a1.sources.r1.interceptors =  i2

a1.sources.r1.interceptors.i2.type = cn.wolfcode.flume.interceptor.TimeStampInterceptor$Builder

## channel1

a1.channels.c1.type = memory

a1.channels.c1.capacity = 1000

a1.channels.c1.transactionCapacity = 100

## sink1

a1.sinks.k1.type = hdfs

a1.sinks.k1.hdfs.path = /behavior/origin/log/%Y-%m-%d

a1.sinks.k1.hdfs.filePrefix = log-

a1.sinks.k1.hdfs.round = false

a1.sinks.k1.hdfs.rollInterval = 10

a1.sinks.k1.hdfs.rollSize = 134217728

a1.sinks.k1.hdfs.rollCount = 0

## 控制输出文件是原生文件。

a1.sinks.k1.hdfs.fileType = DataStream

a1.sinks.k1.hdfs.writeFormat= Text

## 拼装

a1.sources.r1.channels = c1

a1.sinks.k1.channel= c1

抽取:

flume-ng agent -n a1 -c ../ -f taildir2hdfs.conf -Dflume.root.logger=INFO,console

关于时间戳拦截器:

假如hdfs中使用了时间转义字符,此时必须指定时间,两种方案

(1)使用本地时间戳

a1.sinks.k1.hdfs.useLocalTimeStamp =true

(2)使用时间拦截器

a1.sources.r1.interceptors = i1

a1.sources.r1.interceptors.i1.type = timestamp


http://www.ppmy.cn/server/133752.html

相关文章

微信小程序使用MQTT连接阿里云

目录 一、新建项目和项目整体配置​ 二、MQTT 下载引入和配置连接​ 三、阿里云配置 1、创建产品及设备 2、数据进行云流转 四、创建 MQTT 连接​ 五、微信小程序配置 六、效果展示 1、微信小程序发送控制命令 2、LED台灯反馈LED状态 七、微信小程序项目完整代码 一…

Android10 recent键相关总结

目录 初始化流程 点击Recent键流程 RecentsActivity 显示流程 RecentsModel 获取数据管理类 RecentsActivity 布局 已处于Recent界面时 点击recent 空白区域 点击返回键 recent组件配置 Android10 Recent 功能由 System UI,Launcher共同实现。 初始化流程 …

react+video:限制快进、倍速、画中画

实现代码&#xff1a; <video ref{videoRef} src{videoUrl} className{style.video} controls onRateChange{rateChange} onPlay{playVideo} onPause{pauseVideo} onTimeUpdate{timeUpdate} disablePictureInPicture playsInline poster{poster} controlsList"nodownl…

在 Flutter鸿蒙next版本 中使用 if 语句和三元表达式进行视图逻辑判断

目录 写在前面 1. 使用 if 语句 1.1 使用 if 语句 1.2 使用多个条件 2. 使用三元表达式 2.1 简单示例 2.2 结合多条件判断 写在最后 最佳实践 写在前面 在 Flutter 开发中&#xff0c;构建动态和响应式的用户界面是一个核心任务。在显示视图时&#xff0c;我们经常需要…

网络空间指纹:新型网络犯罪研判的关键路径

前言 新型网络犯罪是指利用计算机技术和互联网平台进行犯罪活动的一类犯罪行为。它涵盖了一系列使用网络和数字技术进行非法活动的行为&#xff0c;如网络钓鱼、网络诈骗、恶意软件攻击、黑客入侵、数据泄露、网络色情和社交网络犯罪等。 随着当前打击治理新型网络犯罪博弈态…

【专题】数据库编程

1. MySQL编程基础 1.1 常量与变量 字符串常量&#xff1a; 字符串常量指用单引号或双引号括起来的字符序列。 示例&#xff1a;查询表emp中ename值为SCOTT的雇员信息。 SELECT * FROM emp WHERE enameSCOTT; 数值常量&#xff1a; 数值常量可以分为整数常量和小数常量。 示…

mysql存储过程和存储函数的区别

MySQL中的存储函数和存储过程是两种不同类型的存储程序&#xff0c;它们各自具有独特的特点和适用场景。以下是它们之间的主要区别&#xff1a; 一、定义与功能 存储函数&#xff1a; 是一组为了完成特定功能的SQL语句集&#xff0c;但功能相对单一&#xff0c;针对性强。通常…

屏幕找图实现植物大战僵尸自动收取阳光

阳光图片 2.在截图中查找阳光&#xff0c;找到阳光使用鼠标点击进行收集 import java.awt.AWTException; import java.awt.Dimension; import java.awt.Rectangle; import java.awt.Robot; import java.awt.MouseInfo; import java.awt.image.BufferedImage; import java.io.F…