精华内容
下载资源
问答
  • 主要讲解linux下如何快速逻辑处理数据”Keep正在做日志筛选数据的事情,需要从服务日志中捞含关键字的日志,并且该条日志中含响应时间数据,需捞其中大于500ms的数据Problem 普通的grep只能捞所有包含关键字的...

    最近开始用kpt记录自己的日常工作,本文将是该系列的第一篇,主要讲解linux下如何快速逻辑处理数据

    Keep

    正在做日志筛选数据的事情,需要从服务日志中捞出含关键字的日志,并且该条日志中含响应时间数据,需捞出其中大于500ms的数据

    Problem

    普通的grep只能捞出所有包含关键字的日志,没法做一些简单的逻辑判断,如果用编程语言来处理又会显得很笨重

    Try

    linux下有一个利器命令awk可以使用;

    对于test.log日志内容类似如下的:

    2019-05-03 20:00:00 requestId:a1 bb cc dd 4652019-05-03 20:00:01 requestId:aa bb cc kkk2019-05-03 20:00:01 requestId:a2 bb cc dd 5022019-05-03 20:00:01 requestId:a3 bb cc dd 600

    上述内容中数字表示响应时间,如果需要打印响应时间大于500的requestId的值,基于awk该怎么写:

    cat test.log |grep dd|awk '$7>500 {print $3}'

    接下来让我们带着疑问来学习入门下awk命令:

    awk 'BEGIN{ commands } pattern{ commands } END{ commands }'# 这是awk的标准格式,BEGIN和END是可选的# 1、通过关键字 BEGIN 执行 BEGIN 块的内容,即 BEGIN 后花括号 {} 的内容。# 2、完成 BEGIN 块的执行,开始执行body块。# 3、读入有  换行符分割的记录。# 4、将记录按指定的域分隔符划分域,填充域,$0 则表示所有域(即一行内容),$1 表示第一个域,$n 表示第 n 个域。# 5、依次执行各 BODY 块,pattern 部分匹配该行内容成功后,才会执行 awk-commands 的内容。# 6、循环读取并执行各行直到文件结束,完成body块执行。# 7、开始 END 块执行,END 块可以输出最终结果。
    2fafcf9e643cf4f9f5b7b9e5803e6fdd.png

    重新来分析下上面写awk命令

    cat test.log |grep dd|awk '$7>500 {print $3}'# 先通过grep获取到所有包含dd的内容# 接下来使用awk命令,这里直接用body模块,处理每一行数据# awk默认的分割符刚好是空格,所以我们直接用$7可以直接拿到响应时间# 判断完后简单多了,我们直接$3拿到每一个requestId# 如果吹毛求疵下,只想拿到对应的requestId的值该怎么写?cat test.log |grep dd|awk '$7>500 {print $3}'|awk -F:'{print $2}'# 我们在上述命令基础上再加上管道符,并利用-F来指定新的分隔符:,刚好将requestId:a1这样的字符串切割成两个# 然后直接print $2即可

    一些awk的高级用法

    正则匹配:

    cat test.log |awk '/dd/ && $7>500 {print $3}'|awk -F: '{print $2}'# awk命令支持正则匹配,所以上述解决方案中,其实不需要grep命令,直接按照上述编写即可,&&表示并且

    if函数:

    cat test.log |awk '/dd/ {if($7>500)print $3}'|awk -F: '{print $2}'# awk自带if函数,上述解决方案我们还可以这样编写。将if函数放到body的{}中

    BEGIN的用法:

    cbc2077da19f8579d85dee88deae4f10.png

    END的用法

    cat test.log |awk 'BEGIN {print "im begin"} /dd/&&$7>500 {num=num+1;total=total+$7} END {print num;print total}'# awk支持自定义变量,上述命令是统计响应时间大于500的日志记录数,以及累计响应时长# 我们也可以先在BGGIN模块初始化自定义变量cat test.log |awk 'BEGIN {print "im begin";num=0;total=0} /dd/&&$7>500 {num=num+1;total=total+$7} END {print num;print total}'

    参考资料:

    https://www.runoob.com/linux/linux-comm-awk.html

    https://coolshell.cn/articles/9070.html

    展开全文
  • Navicat Mac 提供的“在数据库或模式中查找”功能在一个数据库和/或模式内搜索表和视图...Navicat 为连接树的连接或对象列表的对象提供筛选,“对象筛选”能让你在对象列表或模型中筛选包含筛选字符串的对象。 在 Nav

    Navicat Mac 提供的“在数据库或模式中查找”功能在一个数据库和/或模式内搜索表和视图的记录。按住 Control 键并点击数据库或模式,并从弹出菜单选择“在数据库中查找”或“在模式中查找”。输入关键字及选择搜索准则,点击“查找”按钮然后在列表中按两下表或视图即可查看记录。需要提前说明的是,Navicat Mac的“在数据库或模式中查找”功能仅限于完整版本使用。

    Navicat 为连接树的连接或对象列表的对象提供筛选,“对象筛选”能让你在对象列表或模型中筛选包含筛选字符串的对象。

    在 Navicat 主窗口或点击“搜索”或在模型设计器点击搜索图标,并指定一个筛选字符串。点击搜索图标有筛选的附加选项。

    忽略大小写:禁用大小写筛选。

    包含:返回包含筛选字符串的对象。

    开始于:返回以筛选字符串为开头的对象。

    整个字:返回符合整个筛选字符串单字的对象。

    结束以:返回以筛选字符串为结束的对象。

    要移除筛选,只需删除筛选字符串。

    连接树筛选:能让你在连接树筛选包含筛选字符串的连接。

    在连接树的搜索文本框指定筛选字符串。如果连接已打开,筛选也会同时应用到连接中的数据库对象。

    要移除筛选,只需删除筛选字符串。

    展开全文
  • Navicat Mac 提供的“在数据库或模式中查找”功能在一个数据库和/或模式内搜索表和...Navicat 为连接树的连接或对象列表的对象提供筛选,“对象筛选”能让你在对象列表或模型中筛选包含筛选字符串的对象。 在 Navica

    Navicat Mac 提供的“在数据库或模式中查找”功能在一个数据库和/或模式内搜索表和视图的记录。按住 Control 键并点击数据库或模式,并从弹出菜单选择“在数据库中查找”或“在模式中查找”。输入关键字及选择搜索准则,点击“查找”按钮然后在列表中按两下表或视图即可查看记录。需要提前说明的是,Navicat Mac的“在数据库或模式中查找”功能仅限于完整版本使用。

    Navicat 为连接树的连接或对象列表的对象提供筛选,“对象筛选”能让你在对象列表或模型中筛选包含筛选字符串的对象。

    在 Navicat 主窗口或点击“搜索”或在模型设计器点击搜索图标,并指定一个筛选字符串。点击搜索图标有筛选的附加选项。

    忽略大小写:禁用大小写筛选。

    包含:返回包含筛选字符串的对象。

    开始于:返回以筛选字符串为开头的对象。

    整个字:返回符合整个筛选字符串单字的对象。

    结束以:返回以筛选字符串为结束的对象。

    要移除筛选,只需删除筛选字符串。

    连接树筛选:能让你在连接树筛选包含筛选字符串的连接。

    在连接树的搜索文本框指定筛选字符串。如果连接已打开,筛选也会同时应用到连接中的数据库对象。

    要移除筛选,只需删除筛选字符串。

    展开全文
  • 模糊匹配在我们日常的数据筛选场景很常见。常见模糊匹配方案我们先从最简单的代码说起,对于模糊匹配的...先从简单的问题入手,从一批搜索原词中,抽取出包含mp3或者包含mp4的搜索原词,我们可以拿SQL来对这个问题...

    模糊匹配在我们日常的数据筛选场景很常见。

    常见模糊匹配方案

    我们先从最简单的代码说起,对于模糊匹配的关键字like,SQL,java等很多语言中都很常见,配合两个百分号(如:like ‘%mp3%’),能对数据的某字段进行文本包含的筛选(将字段中包含mp3的数据筛选出来),完整的学名:正则匹配。先从简单的问题入手,从一批搜索原词中,抽取出包含mp3或者包含mp4的搜索原词,我们可以拿SQL来对这个问题做一个完美的诠释。

    select kw from table where kw like '%mp3%' or kw like '%mp4%'

    思路是,将每一个搜索词对mp3和mp4这两个核心词逐个做匹配后筛选,其最后的结果就是我们想要的,那么有1000个搜索原词,遍历完2000次就可以得到最终结果。

    接着,我们将这两个核心词的体量放大,变成100个核心词,将1000个搜索原词对这100个核心词进行一次模糊匹配,并筛选匹配结果,按照刚才的思路,遍历次数就变成了1000x100 = 100000次,工程上就是需要将搜索原词表与核心词表做一次笛卡尔积以后,然后用原词去like核心词,在这样的一个量下,性能上还都是可以接受的。

    万亿记录数的模糊匹配怎么做?

    上述都是理想情况,现实社会总是会给你降维打击。

    现在的场景是每天1500万的搜索原词与每天聚类后33万的中心词进行模糊匹配,按照常规思路,将原词和中心词做一次笛卡尔积后,结果数量集的记录数已经变成了10的12次单位是万亿预计每个分区占用的空间是30万GB。这是什么概念呢?目前国内某超级大型10多万人的企业,其最大的一个存储结果表的量级也才15万GB,而这个结果集的记录已经是其2倍。再直观一点,我们普通人电脑的硬盘一般都是512GB,30万GB相当于586台个人电脑加和起来的存储空间。

    当然,此时15万GB只是在模糊匹配中的一个临时环节,同时,随着每天搜索原词的不断增加,这个空间还会不断飙升。退一步说,即使存储空间允许,那么在此基础上做模糊匹配,由于like是不走分区裁剪的,所以模糊匹配的过程也会消耗大量的计算资源,从而判断这个方法在整个工程上的可行性极低。

    于是不得不换个思路来解这个问题,做一个简单的分析后,我们发现,核心词都较简短,通常由4个及以下数量的单词组成,若1个搜索原词是由5个单词拼成的,如下图,左边为原词,右边为中心词。

    b7e3c82e60d6bb4aa0f30ae1acaf01ff.png

    然后,为了避免做like,尽量往等值链接上去想,很容易可以发现,我们要把左边的原词尽量变成右边的样子,于是就有了类似下面两个图的变更。

    6f4a536f126998ac8a8f21b00d028cb0.png

    第一个图中的原词在拆词后,我们在拆出来的其中4个词中发现了能与右边的中心词进行等值匹配的关系;而第二个图中的原词在拆词后,没办法与右边的中心词找到等值关系,于是我们成功的避免了工程上的like,而用拆词+等值连接实现了模糊匹配的功能。

    在简单的理清了这个事件的原理后,我们再来对比几个数据,刚说了,每天1500万的搜索词和30万的中心词笛卡尔积后,数据量级到达了10 的12次,存储也预估会占用30万GB的临时空间。那么换成拆词以后,计算的数据量又是多少呢?1500万个搜索原词,每个搜索原词都是由几个单词组成的,因为中心词不会超过4个,于是在拆词的过程中不需要拆4个以上数量的组合,所以:

    • 4个单词组成的原词,1变5
    • 5个单词组成的原词,1变15
    • 6个单词组成的原词,1变56

    依次类推,我们保守的假定每个词被平均拆成50个拆词,于是总词量便是7.5*10的8次,7个亿,这已经比10的12次要好的多了(实际情况下拆词后的结果总量大约为1个亿左右),拿这样的结果再与33万的中心词做一次等值连接的计算,这就转化成了ODPS上最最常见的一个join计算,大大的减少了原来笛卡尔积方案的计算资源和存储资源。

    另外这里的拆词,我们封装在一个Map Reduce里实现,在这个拆词的Map Reduce过程中,我们还可以将过滤停止词,过滤无效字符等逻辑全都加到Map Reduce里去。

    于是利用等值连接的思路,我们实现了搜索原词对批量中心词的模糊匹配。

    而对于许多数据产品,要么聚焦于原词,要么聚焦于行业,其实在行业和原词之前还有一个品的概念,如零售电子行业下的red mp3 player,mickey mp3 player,mp3 player bluetooth,往大里归类都是mp3 player,我们可以得知每一个mp3 player的单独的曝点反等一些列的指标,而没有办法看看他所属的大类品的一个总的曝点反指标,品的概念在某种程度上对卖家还是有很大的意义的,抢占商机在行业与词之间搭了一个品的桥梁,可以说在数据外显方面又做了一次更加准确的升级。

    展开全文
  • 模糊匹配在我们日常的数据筛选场景很常见。常见模糊匹配方案我们先从最简单的代码说起,对于模糊匹配的...先从简单的问题入手,从一批搜索原词中,抽取出包含mp3或者包含mp4的搜索原词,我们可以拿SQL来对这个问题...
  • [Docker]如何批量删除镜像

    千次阅读 热门讨论 2018-12-24 11:44:29
    docker 使用一段时间之后,可能堆积很多用不着的,或者编译错误的镜像,一个一个删除...上面这条命令,可以删除所有名字中带 “provider” 关键字的镜像, grep 后面的参数,就是筛选出名字中包含这个参数的镜像.可以通过...
  • 批处理文件是无格式的文本文件,它包含一条或多条命令。它的文件扩展名为 .bat 或 .cmd。在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.exe按照该文件中各个命令出现的顺序来逐个运行...
  • ASP200问.EXE

    2010-05-20 13:25:08
    79.如何实现不刷新页面筛选数据库中的数据 80.如何实现公共的数据分页模块 82.如何在ADO中调用SQL函数 83.如何调用SQL Server存储过程 86.如何用ASP备份和恢复SQL Server数据库 88.如何将图像存入到数据库中 89.如何...
  • 如何实现快速定位(筛选出不重复值) 如何请在N列中列出A1:L9中每列都存在的数值 自动为性别编号的问题 【文本与页面设置】 EXCEL中如何删除*号 将字符串中的星号“*”替换为其它字符 去空格函数如何去掉字符和单元...
  • 在数据库中,一张数据表(table)可能会包含数百万行之多,这之中有很多数据往往我们并不需要,因此需要对数据添加条件筛选。SQL如何实现过滤?在 SELECT 语句中,数据根据 WHERE 子句中指定的搜索条件进行过滤。 ...
  • 在数据库中,一张数据表(table)可能会包含数百万行之多,这之中有很多数据往往我们并不需要,因此需要对数据添加条件筛选。SQL如何实现过滤?在 SELECT 语句中,数据根据 WHERE 子句中指定的搜索条件进行过滤。 ...
  • EXCEL函数公式集

    热门讨论 2010-03-16 03:26:38
    如何实现快速定位(筛选出不重复值) 如何请在N列中列出A1:L9中每列都存在的数值 自动为性别编号的问题 【文本与页面设置】 EXCEL中如何删除*号 将字符串中的星号“*”替换为其它字符 去空格函数如何去掉字符和单元...
  • VBSCRIPT中文手册

    热门讨论 2010-11-12 10:13:06
    你可以找到在按字母排序的关键字列表中列的 VBScript 语言的所有部分。如果你只想调阅某一部分,例如“对象”,那么语言的每一部分都有它自己更严密的章节。 如何查找呢?单击左边的某个标题,即显示该部分中包含...
  • 他认为对于SQL的学习是永无止境的,相信每一个查询Oracle数据库的人都需要精通SQL语言,才能写高效的查询。他参与本书的编写就是为了帮助别人实现这一目标。 目录 封面 -11 封底 -10 扉页 -9 版权 -8 版权声明 -7...
  • 他认为对于SQL的学习是永无止境的,相信每一个查询Oracle数据库的人都需要精通SQL语言,才能写高效的查询。他参与本书的编写就是为了帮助别人实现这一目标。 目录 封面 -11 封底 -10 扉页 -9 版权 -8 版权声明 -7...
  • vb Script参考文档

    2009-07-28 22:13:02
    你可以找到在按字母排序的关键字列表中列的 VBScript 语言的所有部分。如果你只想调阅某一部分,例如“对象”,那么语言的每一部分都有它自己更严密的章节。 如何查找呢?单击左边的某个标题,即显示该部分中包含...
  • JAVA面试题最全集

    2010-03-13 13:09:10
    Jsp中包含外部文件的方式,两者有何区别。 6.说明Jsp中errorPage的作用,应用范围。 7.介绍在Jsp中如何使用JavaBeans。 8.简单介绍JSP的标记库 9.Jsp和Servlet中的请求转发分别如何实现。 三、J2EE相关知识...
  • SQL语法大全

    2014-03-30 11:00:11
    这里的ActiveConnection可以是一个Connection对象或是一串包含数据库连接信息(ConnectionString)的字符串参数。 CursorType Recordset对象Open方法的CursorType参数表示将以什么样的游标类型启动数据,包括...
  • oracle数据库经典题目

    2011-02-17 15:05:20
    SGA区是由Oracle分配的共享内存结构,包含一个数据库实例共享的数据和控制信息。当多个用户同时连接同一个实例时,SGA区数据供多个用户共享,所以SGA区又称为共享全局区。用户对数据库的各种操作主要在SGA区中进行。...
  • 每个实例都是作者精心筛选的,具有很强的实用性,其中一些是开发人员难于寻觅的。 目 录 第1篇 ASP.NET快速入门篇 第1章 搭建ASP.NET开发环境 2 1.1 ASP.NET环境配置 3 实例001 安装和配置Visual Studio 2008开发...
  • 每个实例都是作者精心筛选的,具有很强的实用性,其中一些是开发人员难于寻觅的。 目 录 第1篇 ASP.NET快速入门篇 第1章 搭建ASP.NET开发环境 2 1.1 ASP.NET环境配置 3 实例001 安装和配置Visual Studio 2008开发...
  • 每个实例都是作者精心筛选的,具有很强的实用性,其中一些是开发人员难于寻觅的。 目 录 第1篇 ASP.NET快速入门篇 第1章 搭建ASP.NET开发环境 2 1.1 ASP.NET环境配置 3 实例001 安装和配置Visual Studio 2008开发...
  • 千里马酒店前台管理系统V7使用手册

    热门讨论 2011-06-16 14:09:38
    如何避免排房冲突、如何确定房价等酒店业务规则,均在这一层中处理。 数据处理层的作用是直接与数据库管理系统DBMS连接,负责低层的数据处理和存贮过程。千里马V7.2采用MS-SQL SERVER 2000数据库系统,并充分...
  • 每个实例都是经过作者精心筛选的,具有很强的实用性,其中一些实例是开发人员难于寻觅的解决方案。  本书两卷共计1200个例子,包括了开发中各个方面最常用的实例,是目前市场上实例最全面的开发类图书;本书实例...
  • Visual Studio程序员箴言--详细书签版

    热门讨论 2012-10-16 20:37:39
    技巧4.4 直接打开包含活动文件的Windows资源管理器 74 技巧4.5 只关闭选定的文件 74 技巧4.6 在什么情况下,文件选项卡频道的下拉按钮会改变图标 75 4.1.2 IDE导航器 76 技巧4.7 使用Ctrl+Tab键打开IDE...
  • 预编译的概念搜索技能搜索用在找第一个邮箱手机提取findall字符串切割筛选正则表达式正则表达式替换单个字符判断中括号选择一个字符正则表达式次数正则开头结尾括号与选择正则表达式特殊符号day19down 递归与爬虫...
  • Visual Studio程序员箴言中文扫描PDF

    热门讨论 2010-12-28 01:04:18
    技巧4.4 直接打开包含活动文件的windows资源管理器 74 技巧4.5 只关闭选定的文件 74 技巧4.6 在什么情况下,文件选项卡频道的下拉按钮会改变图标 75 4.1.2 ide导航器 76 技巧4.7 使用ctrl+tab键打开ide导航...
  • jQuery详细教程

    2013-04-25 14:16:42
    如果您的网站包含许多页面,并且您希望您的 jQuery 函数易于维护,那么请把您的 jQuery 函数放到独立的 .js 文件中。 当我们在教程中演示 jQuery 时,会将函数直接添加到 <head> 部分中。不过,把它们放到一个单独的...
  • 每个实例都是经过笔者精心筛选的,具有很强的实用性,其中一些实例是开发人员难于寻觅的解决方案。  本书适合Visual Basic的初学者,如高校学生、求职人员作为练习、速查、学习使用,也适合Visual Basic程序员参考...

空空如也

空空如也

1 2
收藏数 29
精华内容 11
关键字:

如何筛选出包含关键字的