python中使用pyspark 读取和整理日志数据并将数据写入到es中去
代码:
import re import datetime from pyspark.sql import SparkSession from pyspark import SparkContext from elasticsearch import Elasticsearch spark=SparkSession.builder.appName("lz").getOrCreate() sc = SparkContext.getOrCreate() es = Elasticsearch() month_map = {'Jan': '1', 'Feb': '2', 'Mar':'3', 'Apr':'4', 'May':'5', 'Jun':'6', 'Jul':'7', 'Aug':'8', 'Sep': '9', 'Oct':'10', 'Nov': '11', 'Dec': '12'} log_data = sc.textFile("/Desktop/data_doc/data_Log/sshlogin/03.txt") #使用spark读取本地日志文件 for b in log_data.toLocalIterator(): #以迭代的方式来把一条条数据读取出来进行正则匹配,并最终将 dict作为body写入到es中去 # e='Ambari:Mar 2 02:14:16 ambari sshd[16716]: Accepted password for root from 172.21.202.174 port 59886 ssh2'#日志格式 log_group=re.search('^(\S+):(\w{3})\s+(\d{1,2})\s(\d{2}:\d{2}:\d{2})\s(\S+)\s(\S+)\[(\d+)\]:\s(.+)',b) if log_group: year='2019' try: logtime = year+'-'+month_map[log_group.group(2)]+'-'+log_group.group(3)+' '+log_group.group(4) #将字段拼接成年月日的格式 logtime = datetime.datetime.strptime(logtime,'%Y-%m-%d %H:%M:%S') except Exception as e: pass row = dict(_hostname=log_group.group(1), #将数据组成一个字典 k,v syslog_timestamp=logtime, hostname=log_group.group(5), program=log_group.group(6), pid=log_group.group(7), msg = log_group.group(8)) if re.match('^Accepted password for',row['msg']) or re.match('^Accepted publickey for',row['msg']) : msg_a=re.search('Accepted\s\w+\sfor\s(\S+)\sfrom\s(\d{2,3}\.\d{2,3}\.\d{2,3}\.\d{2,3})\sport\s(\d+)',row['msg']) row['login_success']=True row['login_success_msg']={'username':msg_a.group(1),'user_ip':msg_a.group(2),'user_port':msg_a.group(3)} es.index(index='data_log02',doc_type='test02',body=row) #将数据写入到es中去 else: break
转自:https://www.cnblogs.com/wangkun122/articles/10936938.html
分类:
elasticsearch
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器