数据埋点日志awk脚本快速入库
工作上有这样一个需求:
服务端每天产生的埋点日志比较多>200万行,凌晨2点将这个日志的数据入库到数据库,便于BI分析。
最初我的思路是:写一个shell脚本,将入库的逻辑放入shell脚本中,再将这个shell脚本放入到linux服务器crontab任务中。
说起来简单,但在编写的过程中遇到了问题,主要是日志量大,入库的速度很慢,最初的实现是
cat statlog.log | while read line 这种遍历日志,按行读取来入库,速度超慢。
经优化,采用awk的方式来做:
1,代码如下:
BEGIN{FS="," user="test"passwd="test"host="192.168.0.9"print "==============start=================="sqlInsert="INSERT INTO log.logs_mobile_stat (p1, p2, p3, p4, p5, type, cookie, user_id, time, platform) VALUES"sql=sqlInsertidx=0conMysql="mysql -h" host " -u" user " -p'" passwd "' log -e " "date +%Y-%m-%d\ %H:%M:%S" | getline time;print time; }{idx=idx+1#每1000条记录拼接长一条sqlif(idx==1000){ sqlValues="('"$2"', '"$3"', '"$4"', '"$5"', '"$6"', '"$7"', '"$8"', '"$9"','"$1"','"$10"');" sql=sql sqlValues str=conMysql "\"" sql "\" "system(str)idx=0sql=sqlInsert}else{ sqlValues="('"$2"', '"$3"', '"$4"', '"$5"', '"$6"', '"$7"', '"$8"', '"$9"','"$1"','"$10"'),"sql=sql sqlValues} }END{ #去掉最后的分号sql= substr(sql, 0, length(sql)) str=conMysql "\"" sql "\" "#执行最后不足1000条记录的sqlif(idx>0 && idx<1000){system(str)print"=============end============idx====="idx } "date +%Y--%m-%d\ %H:%M:%S" | getline time2;print time2print"=============end=================" }
2,将上面的代码保存为stat.awk文件,写个调度stat.awk文件的shell,文件名为executeStat.sh
#!/bin/shdate=`date -d -1day +%Y-%m-%d`;log=/home/www/logs/taofen8/api/statlog.log.$date sudo awk -f /tmp/stat.awk $log
3,将executeStat.sh加入到crontab定时任务中, 每天凌晨2点执行
0 2 * * * sudo /tmp/executeStat.sh > /tmp/stat.log
经线上测试,200万左右的日志入库2分钟左右,速度还可以吧。
数据埋点日志awk脚本快速入库相关推荐
- 2021-11-03大数据学习日志——数据埋点+网络爬虫——后端开发入门
01_mini-web 本章节学习目标 能够知道Web开发流程 能够知道使用web应用程序处理客户端的动态资源请求操作 能够知道路由列表的实现 能够知道装饰器方式的添加路由 能够知道logging日志 ...
- 数仓(六)从0到1简单搭建数仓ODS层(埋点日志 + 业务数据)
数仓(一)简介数仓,OLTP和OLAP 数仓(二)关系建模和维度建模 数仓(三)简析阿里.美团.网易.恒丰银行.马蜂窝5家数仓分层架构 数仓(四)数据仓库分层 数仓(五)元数据管理系统解析 最近工作一 ...
- 数仓-用户行为数据-埋点数据日志结构
日志结构大致分为两类 1.普通页面埋点日志 每条日志包含当前页面的页面信息,所有事件(动作).所有曝光信息以及错误信息.除此之外,还包含了一系列公共信息,包括设备信息,地理位置,应用信息等,即下边的c ...
- 企业级数据仓库:数据仓库概述;核心技术框架,数仓理论,数据通道Hive技术框架,HBase设计,系统调度,关系模式范式,ER图,维度建模,星型/雪花/星座模式,数据采集同步,业务数据埋点,数据仓库规范
文章目录 第一章 数据仓库概述 1.1 数据仓库简介 1.1.2 什么是数据仓库? 1.1.3 OLTP 与 OLAP 1.2 数据仓库技术架构 1.3 课程目标 第二章 核心技术框架 2.1 数据仓 ...
- Android中的AOP编程之AspectJ实战实现数据埋点
文章背景 最近在给某某银行做项目的时,涉及到了数据埋点,性能监控等问题,那我们起先想到的有两种方案,方案之一就是借助第三方,比如友盟.Bugly等,由于项目是部署在银行的网络框架之内的,所以该方案不可 ...
- 埋点是什么意思_掌握数据生命周期:初识数据埋点
谈到数据驱动业务,离不开数据是怎么来的,数据收集是整个数据生命周期的初始环节. 数据生命周期的大体介绍,在过去的一篇文章中有提到.虽然文章的部分内容我准备重新构造,但是对于这部分的基础环节,并没有太多 ...
- 数据埋点太难!知乎的做法有何可借鉴之处?
导读:埋点作为商业智能(BI)和人工智能(AI)体系中重要的一环,是公司提升产品工程质量.实施 AB Testing.个性化推荐服务重要的数据来源.在传统的纯 Web 和 Native 开发的产品中, ...
- awk 脚本_AWK单行代码和脚本可帮助您对文本文件进行排序
awk 脚本 Awk是普遍存在的Unix命令,用于扫描和处理包含可预测模式的文本. 但是,由于它具有功能,因此也有理由将其称为编程语言. 令人困惑的是,awk有多个. (或者,如果您认为只有一个,那么 ...
- ios无痕埋点_掌握数据生命周期:初识数据埋点
谈到数据驱动业务,离不开数据是怎么来的,数据收集是整个数据生命周期的初始环节. 数据生命周期的大体介绍,在过去的一篇文章中有提到.虽然文章的部分内容我准备重新构造,但是对于这部分的基础环节,并没有太多 ...
- 代码埋点、可视化埋点、无埋点几种数据埋点方案的分析报告
目录 数据采集的核心问题 一.埋点是什么 二.为什么要埋点 三.埋点有哪些方式 四.各埋点方式优劣对比 五.其他 在这篇文章里面,我们会对数据采集的一些基本概念进行阐述,然后,会针对目前市面上新增的一 ...
最新文章
- 测试适合眉形的软件_软件测试的自我修养:正向思维与逆向思维
- HTTP 1.0 与 1.1比较
- IT十八掌作业_java基础第十六天_GUI/socket
- 全新ARM base PocketPC 2003 Emulator Beta 已登場。
- 如何在Web应用里消费SAP Leonardo的机器学习API
- 扒开系统调用的三层皮(下)
- grafana 创建仪表盘_创建仪表盘前要问的三个问题
- Servlet 浅析
- 【网络流24题】分配问题 最小最大费用最大流
- 【在线仿真】Arduino WS2812b环形24颗霓虹灯动态效果显示
- 从WAVE头文件里获取压缩方式
- int转byte数组以及相关原理
- 机器学习开篇之机器学习的分类
- 努比亚手机老是出现android,努比亚又一老机型迅速升级Android 5.0
- Ant design分析后台首页
- VScode 用socks5代理连接远程服务器
- C++内存空间:静态存储区、栈、堆、文字常量区、程序代码区
- 国内自由下载jar包的地址
- Microbiome:西农韦革宏团队简化合成菌群通过激活ISR防治黄芪根腐病
- android studio 登陆ui界面设计
热门文章
- qt 获取屏幕分辨率
- 强烈呼吁弃用Notepad++,推荐几款优秀替代品
- C++ vector 和push_back 详解
- 服务器背板电源维修,814835-B21 814832-001 DD-2901-3C-LF G9 HPE服务器电源背板
- ie8打不开mysql登录_Win7下IE8无法打开https类型的网站解决方法笔记
- phyton计算每天进步的力量
- MySQL三个表的连接查询
- yxr:Makefile 简单样本
- 洛谷P2668 斗地主
- Kafka 消费者模块(三):rebalance的发送JoinGroupResult请求