工作上有这样一个需求:

服务端每天产生的埋点日志比较多>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脚本快速入库相关推荐

  1. 2021-11-03大数据学习日志——数据埋点+网络爬虫——后端开发入门

    01_mini-web 本章节学习目标 能够知道Web开发流程 能够知道使用web应用程序处理客户端的动态资源请求操作 能够知道路由列表的实现 能够知道装饰器方式的添加路由 能够知道logging日志 ...

  2. 数仓(六)从0到1简单搭建数仓ODS层(埋点日志 + 业务数据)

    数仓(一)简介数仓,OLTP和OLAP 数仓(二)关系建模和维度建模 数仓(三)简析阿里.美团.网易.恒丰银行.马蜂窝5家数仓分层架构 数仓(四)数据仓库分层 数仓(五)元数据管理系统解析 最近工作一 ...

  3. 数仓-用户行为数据-埋点数据日志结构

    日志结构大致分为两类 1.普通页面埋点日志 每条日志包含当前页面的页面信息,所有事件(动作).所有曝光信息以及错误信息.除此之外,还包含了一系列公共信息,包括设备信息,地理位置,应用信息等,即下边的c ...

  4. 企业级数据仓库:数据仓库概述;核心技术框架,数仓理论,数据通道Hive技术框架,HBase设计,系统调度,关系模式范式,ER图,维度建模,星型/雪花/星座模式,数据采集同步,业务数据埋点,数据仓库规范

    文章目录 第一章 数据仓库概述 1.1 数据仓库简介 1.1.2 什么是数据仓库? 1.1.3 OLTP 与 OLAP 1.2 数据仓库技术架构 1.3 课程目标 第二章 核心技术框架 2.1 数据仓 ...

  5. Android中的AOP编程之AspectJ实战实现数据埋点

    文章背景 最近在给某某银行做项目的时,涉及到了数据埋点,性能监控等问题,那我们起先想到的有两种方案,方案之一就是借助第三方,比如友盟.Bugly等,由于项目是部署在银行的网络框架之内的,所以该方案不可 ...

  6. 埋点是什么意思_掌握数据生命周期:初识数据埋点

    谈到数据驱动业务,离不开数据是怎么来的,数据收集是整个数据生命周期的初始环节. 数据生命周期的大体介绍,在过去的一篇文章中有提到.虽然文章的部分内容我准备重新构造,但是对于这部分的基础环节,并没有太多 ...

  7. 数据埋点太难!知乎的做法有何可借鉴之处?

    导读:埋点作为商业智能(BI)和人工智能(AI)体系中重要的一环,是公司提升产品工程质量.实施 AB Testing.个性化推荐服务重要的数据来源.在传统的纯 Web 和 Native 开发的产品中, ...

  8. awk 脚本_AWK单行代码和脚本可帮助您对文本文件进行排序

    awk 脚本 Awk是普遍存在的Unix命令,用于扫描和处理包含可预测模式的文本. 但是,由于它具有功能,因此也有理由将其称为编程语言. 令人困惑的是,awk有多个. (或者,如果您认为只有一个,那么 ...

  9. ios无痕埋点_掌握数据生命周期:初识数据埋点

    谈到数据驱动业务,离不开数据是怎么来的,数据收集是整个数据生命周期的初始环节. 数据生命周期的大体介绍,在过去的一篇文章中有提到.虽然文章的部分内容我准备重新构造,但是对于这部分的基础环节,并没有太多 ...

  10. 代码埋点、可视化埋点、无埋点几种数据埋点方案的分析报告

    目录 数据采集的核心问题 一.埋点是什么 二.为什么要埋点 三.埋点有哪些方式 四.各埋点方式优劣对比 五.其他 在这篇文章里面,我们会对数据采集的一些基本概念进行阐述,然后,会针对目前市面上新增的一 ...

最新文章

  1. 测试适合眉形的软件_软件测试的自我修养:正向思维与逆向思维
  2. HTTP 1.0 与 1.1比较
  3. IT十八掌作业_java基础第十六天_GUI/socket
  4. 全新ARM base PocketPC 2003 Emulator Beta 已登場。
  5. 如何在Web应用里消费SAP Leonardo的机器学习API
  6. 扒开系统调用的三层皮(下)
  7. grafana 创建仪表盘_创建仪表盘前要问的三个问题
  8. Servlet 浅析
  9. 【网络流24题】分配问题 最小最大费用最大流
  10. 【在线仿真】Arduino WS2812b环形24颗霓虹灯动态效果显示
  11. 从WAVE头文件里获取压缩方式
  12. int转byte数组以及相关原理
  13. 机器学习开篇之机器学习的分类
  14. 努比亚手机老是出现android,努比亚又一老机型迅速升级Android 5.0
  15. Ant design分析后台首页
  16. VScode 用socks5代理连接远程服务器
  17. C++内存空间:静态存储区、栈、堆、文字常量区、程序代码区
  18. 国内自由下载jar包的地址
  19. Microbiome:西农韦革宏团队简化合成菌群通过激活ISR防治黄芪根腐病
  20. android studio 登陆ui界面设计

热门文章

  1. qt 获取屏幕分辨率
  2. 强烈呼吁弃用Notepad++,推荐几款优秀替代品
  3. C++ vector 和push_back 详解
  4. 服务器背板电源维修,814835-B21 814832-001 DD-2901-3C-LF G9 HPE服务器电源背板
  5. ie8打不开mysql登录_Win7下IE8无法打开https类型的网站解决方法笔记
  6. phyton计算每天进步的力量
  7. MySQL三个表的连接查询
  8. yxr:Makefile 简单样本
  9. 洛谷P2668 斗地主
  10. Kafka 消费者模块(三):rebalance的发送JoinGroupResult请求