logstash消费kafka过程中对数据的一些常规清洗和处理

本文介绍如何使用Logstash从Kafka消费数据并处理后传递至Elasticsearch,涉及Kafka连接配置、JSON解析、字段添加与重命名、时间格式转换及输出字段选择等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

logstash通过插件的形式来配置input,filter,output,在消费数据后,如果需要对数据做处理,需要用到filter的很多功能。最近使用logstash传递kafka数据到es时,了解了一些logstash处理数据的方式,以下logstash的config做个简单分享:

input {
    kafka {
         bootstrap_servers => "xxx.xxx.xxx.xx:9092,yyy.yyy.yyy.yy:9092," ##kafka地址,可以是集群
         client_id => "test_log_consume"   
         auto_offset_reset => "earliest"  ##从最新的偏移量开始消费
         topics => ["topic_test"]  ## 数组类型,可配置多个topic
         decorate_events => true  #此属性会将当前topic、offset、group、partition等信息也带到message中
         consumer_threads => 1  ## 指定消费的线程数,消费单个topic的话,最好和该topic的partition个数一直或小于这个数
         codec => "json"  ## 获取到kafka的数据后,如果传入的是json格式,这里可以做一个json decode解析
    }
}

filter {
  mutate {
    add_field => {  ## 添加字段
      "offset" => "%{[@metadata][kafka][offset]}"    ## 使用元数据信息添加字段 
	  "patition_id" => "%{[@metadata][kafka][partition]}"
	  "add_field_1" => "test_add_field"  ## 直接写某些数据添加字段
    }
    rename => { 
	  "old_key_name_1" => "new_key_name_1"   ## 修改字段名字
	  "old_key_name_2" => "new_key_name_2"
	}
  }
  date {
    match => [ "test_time", "yyyy-MM-dd", "UNIX"]  ## 将 字段名为 test_time 格式为 yyyy-MM-dd 的字段转换为unix时间戳,并赋回字段(target可以给其它有或没有的字段)
	target => "test_time"
  }
  prune {  ## 指定要输出的字段,没有指定字段的,不输出那个字段
    whitelist_names => [ "offset", "add_field_1", "new_key_name_1", "test"...]
  }
}

output {
    stdout{
        codec => "rubydebug"  ##rubydebug ##输出到屏幕上
    }
}

 

### 构建旅游大数据可视化系统的关键要素 #### 技术选型 对于构建旅游行业的大型数据处理平台而言,技术选型至关重要。考虑到需要处理海量的日志信息以及提供高效的查询响应速度,在存储层面上可以选择分布式文件系统HDFS来保存原始日志记录,并利用Elasticsearch作为索引数据库以便快速检索特定条件下的旅行者行为轨迹[^1]。 #### 数据收集与预处理 为了确保所采集的数据能够满足后续分析需求,通常会采用Flume或Logstash这样的工具来进行实时日志传输。与此同时,还需要借助Kafka消息队列服务暂存待处理的信息流,从而保障整个流水线的稳定性可靠性。在此基础上,通过Spark Streaming完成初步清洗工作,去除噪声项并提取有用特征字段用于进一步加工转换。 #### 可视化展示 针对最终呈现给用户的界面部分,则可以考虑使用D3.js或者ECharts这类开源JavaScript库制作动态图表组件,配合React/Vue等现代前端框架搭建交互性强的应用程序页面。此外,Tableau也是一个不错的选择,它提供了丰富的内置模板直观的操作体验,特别适合那些希望专注于数据分析而非编程细节的人士[^2]。 #### 案例研究 一个典型的成功案例来自于某在线旅行社网站,该机构通过对客户浏览历史、预订偏好等多个维度进行全面挖掘,不仅实现了精准营销推送功能,还推出了个性化的行程规划建议服务。具体做法上,除了常规的时间序列预测外,更引入了协同过滤算法优化推荐效果,显著提升了用户体验满意度及转化率水平[^3]。 ```python import pandas as pd from sklearn.model_selection import train_test_split from surprise import Dataset, Reader, SVD from surprise.model_selection import cross_validate # 加载评分数据集 data = pd.read_csv('travel_ratings.csv') reader = Reader(rating_scale=(1, 5)) dataset = Dataset.load_from_df(data[['user_id', 'item_id', 'rating']], reader) # 划分训练集测试集 trainset, testset = train_test_split(dataset.build_full_trainset().build_testset(), test_size=0.2) # 使用SVD矩阵分解模型进行拟合 algo = SVD() cross_validate(algo, dataset, measures=['RMSE'], cv=5, verbose=True) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值