數據分析尤爲是大數據分析這幾年的熱度依然不減,但面對眼花繚亂的數據分析產品很難去選擇,那什麼是理想的數據分析平臺呢。下面是根據個人我的理解的理想數據分析平臺,在次強調我理想的數據分析平臺。不要對號入座。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,最後進行分組排序取前十。雖然看起來稍微複雜些,仍是比寫代碼或者腳本簡單不少。
先些這兩點,後面在補充。
賽克藍德是一家數據分析公司,本着數據改變生活的理念,致力於提供方便好用的數據分析產品。