
隨著大數(shù)據(jù)的爆紅,數(shù)據(jù)分析師這個(gè)職位也得到了越來(lái)越多的關(guān)注,千千萬(wàn)萬(wàn)懂些大數(shù)據(jù)技術(shù)的少年們都渴望成為高大上的“大數(shù)據(jù)科學(xué)家”,可是,你們真的準(zhǔn)備好了嗎?
1、最早的數(shù)據(jù)分析可能就報(bào)表 目前很多數(shù)據(jù)分析后的結(jié)果,展示的形式很多,有各種圖形以及報(bào)表,最早的應(yīng)該是簡(jiǎn)單的幾條數(shù)據(jù),然后搞個(gè)web頁(yè)面,展示一下數(shù)據(jù)。早期可能數(shù)據(jù)量也不大,隨便搞個(gè)數(shù)據(jù)庫(kù),然后SQL搞一下,數(shù)據(jù)報(bào)表就出來(lái)了。但是數(shù)據(jù)量大起來(lái)怎么分析呢?數(shù)據(jù)分析完了怎么做傳輸呢?這么大的數(shù)據(jù)量怎么做到實(shí)時(shí) 呢?分析的結(jié)果數(shù)據(jù)如果不是很大還行,如果分析的結(jié)果數(shù)據(jù)還是很大改怎么辦呢?這些問(wèn)題在這篇文章中都能找到答案,下面各個(gè)擊破。
2、要做數(shù)據(jù)分析,首先要有數(shù)據(jù)
這個(gè)標(biāo)題感覺(jué)有點(diǎn)廢話,不過(guò)要做飯需要食材一樣。有些數(shù)據(jù)時(shí)業(yè)務(wù)積累的,像交易訂單的數(shù)據(jù),每一筆交易都會(huì)有一筆訂單,之后再對(duì)訂單數(shù)據(jù)作分 析。但是有些場(chǎng)景下,數(shù)據(jù)沒(méi)法考業(yè)務(wù)積累,需要依賴(lài)于外部,這個(gè)時(shí)候外部如果有現(xiàn)成的數(shù)據(jù)最好了,直接join過(guò)來(lái),但是有時(shí)候是需要自己獲取的,例如搞 個(gè)爬蟲(chóng)爬取網(wǎng)頁(yè)的數(shù)據(jù),有時(shí)候單臺(tái)機(jī)器搞爬蟲(chóng)可能還爬不完,這個(gè)時(shí)候可能就開(kāi)始考慮單機(jī)多線程爬取或者分布式多線程爬取數(shù)據(jù),中間涉及到一個(gè)步驟,就是在 線的業(yè)務(wù)數(shù)據(jù),需要每天晚上導(dǎo)入到離線的系統(tǒng)中,之后才可以進(jìn)行分析。
3、有了數(shù)據(jù),咋分析呢?
先將數(shù)據(jù)量小的情況下,可能一個(gè)復(fù)雜的SQL就可以搞出來(lái),之后搞個(gè)web服務(wù)器,頁(yè)面請(qǐng)求的時(shí)候,執(zhí)行這個(gè)SQL,然后展示數(shù)據(jù),好了,一個(gè)最簡(jiǎn) 單的數(shù)據(jù)分析,嚴(yán)格意義上講是統(tǒng)計(jì)的分析。這種情況下,分析的數(shù)據(jù)源小,分析的腳本就是在線執(zhí)行的SQL,分析的結(jié)果不用傳輸,結(jié)果的展示就在頁(yè)面上,整 個(gè)流程一條龍。
4、數(shù)據(jù)量大了,無(wú)法在線分析了,咋辦呢?
這個(gè)時(shí)候,數(shù)據(jù)量已經(jīng)大的無(wú)法用在線執(zhí)行SQL的形式進(jìn)行統(tǒng)計(jì)分析了。這個(gè)時(shí)候順應(yīng)時(shí)代的東西產(chǎn)生了(當(dāng)然還有其他的,我就知道這個(gè)呵呵),數(shù)據(jù)離 線數(shù)據(jù)工具h(yuǎn)adoop出來(lái)了。這個(gè)時(shí)候,你的數(shù)據(jù)以文件的形式存在,可能各個(gè)屬性是逗號(hào)分隔的,數(shù)據(jù)條數(shù)有十幾個(gè)億。這時(shí)候你可能需要構(gòu)建一個(gè) hadoop集群,然后把自己的文件導(dǎo)入到集群上面去,上了集群之后,文件就是HDFS的格式了,然后如果要做統(tǒng)計(jì)分析,需要寫(xiě)mapreduce程序, 所謂的mapreduce程序,就是實(shí)現(xiàn)map和reduce的接口,按照自己的業(yè)務(wù)邏輯寫(xiě)分析流程,之后把程序打成jar包上傳到集群,之后開(kāi)始執(zhí)行。 分析后的結(jié)果還是文件的形式產(chǎn)生。
5、分析個(gè)數(shù)據(jù)還要寫(xiě)java代碼是不是效率低了點(diǎn)?
這個(gè)確實(shí)是,mapreduce的程序,本身的可測(cè)性沒(méi)有執(zhí)行一個(gè)簡(jiǎn)單的單元測(cè)試來(lái)的爽,所以效率確實(shí)不高。這個(gè)時(shí)候,hive出現(xiàn) 了,hive是一個(gè)數(shù)據(jù)倉(cāng)庫(kù)分析的語(yǔ)言,語(yǔ)法類(lèi)似于數(shù)據(jù)庫(kù)的SQL,但是有幾個(gè)地方是不同的。有了hive之后,數(shù)據(jù)分析就好之前寫(xiě)SQL一樣了,按照邏 輯編寫(xiě)hive SQL,然后控制臺(tái)執(zhí)行??赡茏畲蟮母杏X(jué)是,數(shù)據(jù)庫(kù)的sql很快就能有結(jié)果,但是hive的,即使很小的一個(gè)數(shù)據(jù)分析,也需要幾分鐘時(shí)間。構(gòu)建hive, 需要在hadoop的集群上,原理很簡(jiǎn)單,就是把文件構(gòu)建成表的形式(有一個(gè)數(shù)據(jù)庫(kù)或者內(nèi)存數(shù)據(jù)庫(kù)維護(hù)表的schema信息),之后提交寫(xiě)好的hive sql的時(shí)候,hadoop集群里面的程序把hive腳本轉(zhuǎn)換成對(duì)應(yīng)的mapreduce程序執(zhí)行。這個(gè)時(shí)候,做離線的數(shù)據(jù)分析簡(jiǎn)單寫(xiě)腳本就行了,不用再 搞java代碼,然后上傳執(zhí)行了。
6、數(shù)據(jù)產(chǎn)生的結(jié)果,怎么搞到線上提供服務(wù)的數(shù)據(jù)庫(kù)中呢?
這個(gè)時(shí)候分析的結(jié)果有了,可能是一個(gè)很寬很長(zhǎng)的excel表格,需要導(dǎo)入到線上的數(shù)據(jù)庫(kù)中,可能你想到了,如果我的數(shù)據(jù)庫(kù)是mysql,我直接執(zhí)行 load 命令就搞進(jìn)去了,哪有那么麻煩。但是數(shù)據(jù)源可能有多了,mysql/oracle/hbasefs 按照笛卡爾積的形式,這樣搞要搞死程序員了。這個(gè)時(shí)候datax(已經(jīng)開(kāi)源)出現(xiàn)了,能夠?qū)崿F(xiàn)異構(gòu)數(shù)據(jù)源的導(dǎo)入和導(dǎo)出,采用插件的形式設(shè)計(jì),能夠支持未來(lái) 的數(shù)據(jù)源。如果需要導(dǎo)數(shù)據(jù),配置一下datax的xml文件或者在web頁(yè)面上點(diǎn)擊下就可以實(shí)現(xiàn)了。
7、離線分析有時(shí)間差,實(shí)時(shí)的話怎么搞呢?
要構(gòu)建實(shí)時(shí)的分析系統(tǒng),其實(shí)在結(jié)果數(shù)據(jù)出來(lái)之前,架構(gòu)和離線是截然不同的。數(shù)據(jù)時(shí)流動(dòng)的,如果在大并發(fā)海量數(shù)據(jù)流動(dòng)過(guò)程中,進(jìn)行自己的業(yè)務(wù)分析呢? 這里其實(shí)說(shuō)簡(jiǎn)單也簡(jiǎn)單,說(shuō)復(fù)雜也復(fù)雜。目前我接觸過(guò)的,方案是這樣的,業(yè)務(wù)數(shù)據(jù)在寫(xiě)入數(shù)據(jù)庫(kù)的時(shí)候,這里的數(shù)據(jù)庫(kù)mysql,在數(shù)據(jù)庫(kù)的機(jī)器上安裝一個(gè)程 序,類(lèi)似JMS的系統(tǒng),用于監(jiān)聽(tīng)binlog的變更,收到日志信息,將日志信息轉(zhuǎn)換為具體的數(shù)據(jù),然后以消息的形式發(fā)送出來(lái)。這個(gè)時(shí)候?qū)崿F(xiàn)了解耦,這樣的 處理并不影響正常的業(yè)務(wù)流程。這個(gè)時(shí)候需要有個(gè)Storm集群,storm集群干啥事情呢?就一件事情,分析數(shù)據(jù),這個(gè)集群來(lái)接收剛才提到的JMS系統(tǒng)發(fā) 送出來(lái)的消息,然后按照指定的規(guī)則進(jìn)行邏輯合并等計(jì)算,把計(jì)算的結(jié)果保存在數(shù)據(jù)庫(kù)中,這樣的話,流動(dòng)的數(shù)據(jù)就可以過(guò)一遍篩子了。
8、分析的結(jié)果數(shù)據(jù)特別大,在線請(qǐng)求這些結(jié)果數(shù)據(jù)數(shù)據(jù)扛不住了,咋搞?
一般的結(jié)果數(shù)據(jù),數(shù)據(jù)量沒(méi)有那么大,也就幾十萬(wàn)的樣子,這樣的數(shù)據(jù)級(jí)別,對(duì)于mysql這樣的數(shù)據(jù)庫(kù)沒(méi)有任何壓力,但是這個(gè)數(shù)據(jù)量如果增加到千 萬(wàn)或者億級(jí)別,同時(shí)有復(fù)雜的SQL查詢(xún),這個(gè)時(shí)候mysql肯定就扛不住了。這個(gè)時(shí)候,可能需要構(gòu)建索引(例如通過(guò)lucene來(lái)對(duì)于要檢索的字段添加索 引),或者用分布式的內(nèi)存服務(wù)器來(lái)完成查詢(xún)??傊?,兩套思路,一個(gè)是用文件索引的形式,說(shuō)白來(lái)就是空間換時(shí)間,另外一種是用內(nèi)存,就是用更快的存儲(chǔ)來(lái)抗請(qǐng) 求。
9、在線的數(shù)據(jù)庫(kù),除了mysql、oracle之外,還有其他選擇不?
其實(shí)目前大家的思維定勢(shì),往往第一個(gè)選擇就是oracle或者mysql,其實(shí)完全可以根據(jù)場(chǎng)景來(lái)進(jìn)行選擇,mysql和oracle是傳統(tǒng)的 關(guān)系型數(shù)據(jù)庫(kù),目前nosql類(lèi)的數(shù)據(jù)庫(kù)也很多,例如HBase就是其中一個(gè)重要的代表。如果數(shù)據(jù)離散分布比較強(qiáng),且根據(jù)特定的key來(lái)查詢(xún),這個(gè)時(shí)候 HBase其實(shí)是一個(gè)不錯(cuò)的選擇。
10、空間的數(shù)據(jù)怎么分析?
上面的分析大都是統(tǒng)計(jì)維度的,其實(shí)最簡(jiǎn)單的描述就是求和或者平均值等,這個(gè)時(shí)候問(wèn)題來(lái)了,大數(shù)據(jù)量的空間數(shù)據(jù)如何分析呢?對(duì)于我們電子商務(wù)而言,空 間數(shù)據(jù)可能就是海量的收貨地址數(shù)據(jù)了。需要做分析,第一步就是先要把經(jīng)緯度添加到數(shù)據(jù)中(如果添加經(jīng)緯度,這個(gè)可以搞http的請(qǐng)求來(lái)通過(guò)地圖服務(wù)提供商 來(lái)或者,或者是根據(jù)測(cè)繪公司的基礎(chǔ)數(shù)據(jù)來(lái)進(jìn)行文本切割分析),之后空間數(shù)據(jù)是二維的,但是我們常見(jiàn)的代數(shù)是一維的,這個(gè)時(shí)候一個(gè)重要的算法出現(xiàn) 了,geohash算法,一種將經(jīng)緯度數(shù)據(jù)轉(zhuǎn)換為一個(gè)可比較,可排序的字符串的算法。然后,這樣就可以再空間距離方面進(jìn)行分析了,例如遠(yuǎn)近,例如方圓周邊 等數(shù)據(jù)的分析。
11、上面這些僅僅是統(tǒng)計(jì),如果想搞算法或者挖掘之類(lèi)的,怎么搞呢?
上述的分析,大多數(shù)是統(tǒng)計(jì)分析,這個(gè)時(shí)候如果想高一點(diǎn)高級(jí)的,例如添加一個(gè)算法,咋搞呢?其他復(fù)雜的算法我沒(méi)咋接觸過(guò)。將拿一個(gè)我練過(guò)手的算法來(lái)講 吧。邏輯回歸,如果樣本數(shù)據(jù)量不是很大,可以采用weka來(lái)做了個(gè)回歸,獲得一個(gè)表達(dá)式,然后在線上系統(tǒng)中應(yīng)用這個(gè)表達(dá)式,這種類(lèi)似的表達(dá)式獲取對(duì)于實(shí)時(shí) 性要求不是很高,所以公式每天跑一次就行了。如果數(shù)據(jù)量比較大,單機(jī)的weka無(wú)法滿(mǎn)足需求了,可以將weka的jar包集成在系統(tǒng)中分析,當(dāng)然也可以通 過(guò)hadoop中的mahout來(lái)進(jìn)行離線分析,獲取這個(gè)表達(dá)式。
12、我就是想離線分析數(shù)據(jù),但是受不了hive或者h(yuǎn)adoop的速度,咋搞?
其實(shí)搞過(guò)一段時(shí)間hadoop的人肯定有一點(diǎn)不爽,就是離線分析的速度太慢了,可能需要等很久,這個(gè)時(shí)候spark出現(xiàn)了,他和hadoop類(lèi)似, 不過(guò)由于是內(nèi)存中計(jì)算,所以速度快了很多,底層可以介入HDFS的文件系統(tǒng),具體我沒(méi)有使用過(guò),但是公司內(nèi)部一個(gè)團(tuán)隊(duì)目前已經(jīng)用spark來(lái)進(jìn)行分析了。
13、這就是搞大數(shù)據(jù)了? 有了這些工具就是搞大數(shù)據(jù)了?
答案肯定不是,這個(gè)僅僅是工具罷了。真正搞大數(shù)據(jù)的可能在于思維的變化,用數(shù)據(jù)來(lái)思考,用數(shù)據(jù)來(lái)做決定。目前的無(wú)線和大數(shù)據(jù)啥關(guān)系?我覺(jué)得無(wú)線的終端是數(shù)據(jù)的來(lái)源和消費(fèi)端,中間需要大數(shù)據(jù)的分析,兩者密不可分啊
14,注意大數(shù)據(jù),和數(shù)據(jù)大是二碼事,如何利用海量的數(shù)據(jù)并結(jié)合互聯(lián)網(wǎng)思維來(lái)挖掘出各種有價(jià)值的信息,才是真正的大數(shù)據(jù)。
作者:三劫散仙 微信公眾號(hào):我是攻城師(woshigcs)
數(shù)據(jù)分析咨詢(xún)請(qǐng)掃描二維碼
若不方便掃碼,搜微信號(hào):CDAshujufenxi
SQL Server 中 CONVERT 函數(shù)的日期轉(zhuǎn)換:從基礎(chǔ)用法到實(shí)戰(zhàn)優(yōu)化 在 SQL Server 的數(shù)據(jù)處理中,日期格式轉(zhuǎn)換是高頻需求 —— 無(wú)論 ...
2025-09-18MySQL 大表拆分與關(guān)聯(lián)查詢(xún)效率:打破 “拆分必慢” 的認(rèn)知誤區(qū) 在 MySQL 數(shù)據(jù)庫(kù)管理中,“大表” 始終是性能優(yōu)化繞不開(kāi)的話題。 ...
2025-09-18CDA 數(shù)據(jù)分析師:表結(jié)構(gòu)數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結(jié)構(gòu)數(shù)據(jù)(如數(shù)據(jù)庫(kù)表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-18DSGE 模型中的 Et:理性預(yù)期算子的內(nèi)涵、作用與應(yīng)用解析 動(dòng)態(tài)隨機(jī)一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開(kāi)始提取前,需先判斷 TIF 文件的類(lèi)型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結(jié)構(gòu)數(shù)據(jù)特征價(jià)值的專(zhuān)業(yè)核心 表結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如數(shù)據(jù)庫(kù)表、Excel 表、 ...
2025-09-17Excel 導(dǎo)入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實(shí)戰(zhàn)應(yīng)用 在用 Python(如 pandas 庫(kù))處理 Excel 數(shù)據(jù)時(shí),“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗(yàn)與 t 檢驗(yàn):差異、適用場(chǎng)景與實(shí)踐應(yīng)用 在數(shù)據(jù)分析與統(tǒng)計(jì)學(xué)領(lǐng)域,假設(shè)檢驗(yàn)是驗(yàn)證研究假設(shè)、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結(jié)構(gòu)數(shù)據(jù)全功能周期的專(zhuān)業(yè)操盤(pán)手 表格結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計(jì)劃中 rows 數(shù)量的準(zhǔn)確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調(diào)優(yōu)中,EXPLAIN執(zhí)行計(jì)劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對(duì)象的 text 與 content:區(qū)別、場(chǎng)景與實(shí)踐指南 在 Python 進(jìn)行 HTTP 網(wǎng)絡(luò)請(qǐng)求開(kāi)發(fā)時(shí)(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結(jié)構(gòu)數(shù)據(jù)價(jià)值的核心操盤(pán)手 表格結(jié)構(gòu)數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫(kù)表)是企業(yè)最基礎(chǔ)、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請(qǐng)求工具對(duì)比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請(qǐng)求(如接口調(diào)用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長(zhǎng)浮點(diǎn)數(shù)據(jù)的科學(xué)計(jì)數(shù)法問(wèn)題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長(zhǎng)浮點(diǎn)數(shù)據(jù)時(shí)的科學(xué)計(jì)數(shù)法問(wèn)題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務(wù)數(shù)據(jù)分析步驟的落地者與價(jià)值優(yōu)化者 業(yè)務(wù)數(shù)據(jù)分析是企業(yè)解決日常運(yùn)營(yíng)問(wèn)題、提升執(zhí)行效率的核心手段,其價(jià)值 ...
2025-09-12用 SQL 驗(yàn)證業(yè)務(wù)邏輯:從規(guī)則拆解到數(shù)據(jù)把關(guān)的實(shí)戰(zhàn)指南 在業(yè)務(wù)系統(tǒng)落地過(guò)程中,“業(yè)務(wù)邏輯” 是連接 “需求設(shè)計(jì)” 與 “用戶(hù)體驗(yàn) ...
2025-09-11塔吉特百貨孕婦營(yíng)銷(xiāo)案例:數(shù)據(jù)驅(qū)動(dòng)下的精準(zhǔn)零售革命與啟示 在零售行業(yè) “流量紅利見(jiàn)頂” 的當(dāng)下,精準(zhǔn)營(yíng)銷(xiāo)成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務(wù)數(shù)據(jù)分析:概念辨析與協(xié)同價(jià)值 在數(shù)據(jù)驅(qū)動(dòng)決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務(wù)數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類(lèi)分析:從操作實(shí)踐到業(yè)務(wù)價(jià)值挖掘 在數(shù)據(jù)分析場(chǎng)景中,聚類(lèi)分析作為 “無(wú)監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計(jì)模型的核心目的:從數(shù)據(jù)解讀到?jīng)Q策支撐的價(jià)值導(dǎo)向 統(tǒng)計(jì)模型作為數(shù)據(jù)分析的核心工具,并非簡(jiǎn)單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10