理想的数据分析平台

    数据分析尤为是大数据分析这几年的热度依然不减,但面对眼花缭乱的数据分析产品很难去选择,那什么是理想的数据分析平台呢。下面是根据个人我的理解的理想数据分析平台,在次强调我理想的数据分析平台。不要对号入座。linux

    在这里我并无强调大数据分析平台,由于不少时候小数据分析都没有作好的状况下,谈大数据分析有点早,我一贯的观点都是先把简单的少许的作好,才有机会作大量的复杂的平台。有句话叫不扫一屋何以扫天下。既然谈到数据分析平台,那什么是数据呢?百度百科的定位为:数据(data)是事实或观察的结果,是对客观事物的逻辑概括,是用于表示客观事物的未经加工的的原始素材。数据能够是连续的值,好比声音、图像,称为模拟数据。也能够是离散的,如符号、文字,称为数字数据。在计算机系统中,数据以二进制信息单元0,1的形式表示。但这个范围有些大和抽象,不利于分析,对计算机来讲,全部的数据都是0和1。但实际上咱们能分析的都是咱们能够识别的数据,全部咱们认为数据分析平台首先要分析的是可以识别的文本数据,对于视频,音频等数据不在目前的数据分析平台中。文本数据的载体有各类各类各样,全部数据分析平台的第一个能力是获取数据的能力。nginx

   数据获取的能力,如今计算机中的数据格式各类各样,有结构化数据,有非结构化数据。有doc,xls,txt,db等各类各样,因此一个理想的数据分析平台首先要能识别这些数据格式,并从这些数据格式的文档中抽取文本数据,而后进行下一步的分析。web

  获取到数据后,分析什么呢,这个很难有统一的分析目标,因此平台须要有灵活的搜索语法。并且分析的过程和目标不少时候也是不肯定的,这个时候平台既要支持随时获取数据分析,也要支持时时数据分析。可能有些抽象,举几个例子:shell

例子1:分析一篇word文章中出现单词最多的前10个。这个分析就是个偶发事件,那怎么作的,固然若是能写代码,这些都不是问题,但大多数用户是不具有写代码的能力的。因此我认为平台提供的平台支持以下搜索语法:运维

   source=test.docx | split(" ")  as word|field word, num| group by word|order by num desc| top 10tcp

这个语法的大概含义是首先读取word文档,而后根据空格进行分词,而后对分好的词进行group by操做,而后根据数量进行从大到小排序,最后获取前10个。你看这个语法还算比较容易理解,好比写代码仍是简单很多。ide

例子2:分析nginx访问日志中最多的前10个ip地址。这个在运维分析中是比较经常使用的,用shell能够实现。工具

cat access_log | awk '{print $1}' | uniq -c | sort -rn -k1 | head -n 10
但这个是能在linux的工具下执行,只能在执行一台机器上执行,有没有更好的方式呢?好比以下语法:大数据

source=access_log | split(line," ")  field 1 as ip | field ip, num| group by ip|order by num desc| top 10日志

这个语法的含义是读取access_log文件,对每行进行split,获取第一个字段命名为ip,而后根据ip进行group by分组,而后根据数量进行从大到小排序,最后获取前10个。这种语法能够经过平台直接支持,经过web界面就能够直接查询,是否比shell更方便呢?

例子3:统计linux下tcp端口源链接ip的前10,在linux下经过ss -ntu能够查看到明细

Netid  State      Recv-Q Send-Q     Local Address:Port       Peer Address:Port 
tcp    ESTAB      0      0             10.9.58.23:45889    122.225.101.50:514   
tcp    ESTAB      0      52            10.9.58.23:13717    183.212.160.45:1330 

但如何进行统计呢?好比以下语法:

source="exec:ss -ntu"| rownum>1 | rmdup(" ")|split(line," ")|field 4 as source |substr(source,0,pos(source,":")) as sourceip|field sourceip, num| group by sourceip|order by num desc| top 10

这个语法的含义是执行ss -ntu获取第二行到结尾,而后去除重复的空格,而后对每行空格进行分割,获取第四个字段,命名为source,而后针对source进行substr获取源ip,substr第一个参数是字段,0是开始位置,结尾位置是冒号的位置,命名为sourceip,最后进行分组排序取前十。虽然看起来稍微复杂些,仍是比写代码或者脚本简单不少。

先些这两点,后面在补充。

赛克蓝德是一家数据分析公司,本着数据改变生活的理念,致力于提供方便好用的数据分析产品。

相关文章
相关标签/搜索