ETL概述javascript
ETL(Extraction-Transformation-Loading)是將業務系統的數據通過抽取、清洗轉換以後加載到數據倉庫的過程,目的是將企業中的分散、零亂、標準不統一的數據整合到一塊兒,爲企業的決策提供分析依據, ETL是BI(商業智能)項目重要的一個環節。css
數據挖掘通常是指從大量的數據中經過算法搜索隱藏於其中信息的過程。它一般與計算機科學有關,並經過統計、在線分析處理、情報檢索、機器學習、專家系統(依靠過去的經驗法則)和模式識別等諸多方法來實現上述目標。它的分析方法包括:分類、估計、預測、相關性分組或關聯規則、聚類和複雜數據類型挖掘。html
首先得有數據,數據的收集有兩個方式,第一個方式是拿,專業點的說法叫抓取或者爬取,例如搜索引擎就是這麼作的,它把網上的全部的信息都下載到它的數據中心,而後你一搜才能搜出來。html5
通常會經過隊列方式進行,由於數據量實在是太大了,數據必須通過處理纔會有用,但是系統處理不過來,只好排好隊,慢慢的處理。java
如今數據就是金錢,掌握了數據就至關於掌握了錢。要否則網站怎麼知道你想買什麼呢?就是由於它有你歷史的交易的數據,這個信息可不能給別人,十分寶貴,因此須要存儲下來。python
上面存儲的數據是原始數據,原始數據可能是雜亂無章的,有不少垃圾數據在裏面,於是須要清洗和過濾,獲得一些高質量的數據。對於高質量的數據,就能夠進行分析,從而對數據進行分類,或者發現數據之間的相互關係,獲得知識。mysql
注:第三與第四個步驟,現存後清洗和先清洗再存,在真是的業務場景中能夠適當互換。算法
檢索就是搜索,所謂外事問google,內事問百度。挖掘,僅僅搜索出來已經不能知足人們的要求了,還須要從信息中挖掘出相互的關係。sql
怎麼友好的展現與傳遞給用戶爲數據挖掘工做作好閉環。mongodb
一、針對日誌文件類
工具 |
定義 |
Logstash |
Logstash是一個開源數據收集引擎,具備實時管道功能。Logstash能夠動態地未來自不一樣數據源的數據統一塊兒來,並將數據標準化到所選擇的目的地。 |
Filebeat |
Filebeat 做爲一個輕量級的日誌傳輸工具能夠將日誌推送到中心 Logstash。 |
Fluentd |
Fluentd 建立的初衷主要是儘量的使用 JSON 做爲日誌輸出,因此傳輸工具及其下游的傳輸線不須要猜想子字符串裏面各個字段的類型。這樣,它爲幾乎全部的語言都提供庫,便可以將它插入到自定義的程序中。 |
Logagent |
Logagent 是 Sematext 提供的傳輸工具,它用來將日誌傳輸到 Logsene(一個基於SaaS 平臺的 Elasticsearch API)。 |
Rsylog |
絕大多數 Linux 發佈版本默認的守護進程,rsyslog 讀取並寫入 /var/log/messages。它能夠提取文件、解析、緩衝(磁盤和內存)以及將它們傳輸到多個目的地,包括 Elasticsearch 。能夠今後處找到如何處理 Apache 以及系統日誌。 |
Logtail |
阿里雲日誌服務的生產者,目前在阿里集團內部機器上運行,通過3年多時間的考驗,目前爲阿里公有云用戶提供日誌收集服務。 |
關於詳解日誌採集工具Logstash、Filebeat、Fluentd、Logagent、Rsylog和Logtail在優點、劣勢
二、針對爬蟲類
頁面下載 --> 頁面解析 --> 數據存儲
(1)頁面下載器
對於下載器而言,python的庫requests能知足大部分測試+抓取需求,進階工程化scrapy,動態網頁優先找API接口,若是有簡單加密就破解,實在困難就使用splash渲染。
(2)頁面解析器
①BeautifulSoup(入門級):Python爬蟲入門BeautifulSoup模塊
②pyquery(相似jQuery):Python爬蟲:pyquery模塊解析網頁
③lxml:Python爬蟲:使用lxml解析網頁內容
④parsel:Extract text using CSS or XPath selectors
⑤scrapy的Selector (強烈推薦, 比較高級的封裝,基於parsel)
⑥選擇器(Selectors):python爬蟲:scrapy框架xpath和css選擇器語法
---------------------
總結:
解析器直接使用scrapy的Selector 就行,簡單、直接、高效。
(3)數據存儲
①txt文本:Python全棧之路:文件file經常使用操做
②csv文件:python讀取寫入csv文件
③sqlite3 (python自帶):Python編程:使用數據庫sqlite3
④MySQL:SQL:pymysql模塊讀寫mysql數據
⑤MongoDB:Python編程:mongodb的基本增刪改查操做
---------------------
總結:
數據存儲沒有什麼可深究的,按照業務需求來就行,通常快速測試使用MongoDB,業務使用MySQL
(4)其餘工具
①execjs :執行js
Python爬蟲:execjs在python中運行javascript代碼
②pyv8: 執行js
mac安裝pyv8模塊-JavaScript翻譯成python
③html5lib
Python爬蟲:scrapy利用html5lib解析不規範的html文本
一、DataWrangler
基於網絡的服務是斯坦福大學的可視化組設計來清洗和重排數據的.文本編輯很是簡單。例如,當我選擇大標題爲「Reported crime in Alabama」的樣本數據的某行的「Alabama」,而後選擇另外一組數據的「Alaska」,它會建議提取每州的名字。把鼠標停留在建議上,就能夠看到用紅色突出顯示的行。
二、Google Refine
它能夠導入導出多種格式的數據,如標籤或逗號分隔的文本文件、Excel、XML和JSON文件。Refine設有內置算法,能夠發現一些拼寫不同但實際上應分爲一組的文本。導入你的數據後,選擇編輯單元格->聚類,編輯,而後選擇要用的算法。數據選項,提供快速簡單的數據分佈概貌。這個功能能夠揭示那些可能因爲輸入錯誤致使的異常——例如,工資記錄不是80,000美圓而居然是800,000美圓;或指出不一致的地方——例如薪酬數據記錄之間的差別,有的是計時工資,有的是每週支付,有的是年薪。除了數據管家功能,Google Refine還提供了一些有用的分析工具,例如排序和篩選。
三、Logstash
Logstash 是一款強大的數據處理工具,它能夠實現數據傳輸,格式處理,格式化輸出,還有強大的插件功能,經常使用於日誌處理。
數據存儲主要分爲結構化數據的存儲和非結構化數據的存儲。
一、結構化數據
(1)定義
通常指存儲在數據庫中,具備必定邏輯結構和物理結構的數據,最爲常見的是存儲在關係數據庫中的數據;非結構化數據:通常指結構化數據之外的數據,這些數據不存儲在數據庫中,而是以各類類型的文本形式存放,其中Web上的一些數據(內嵌於HTML或XML標記中)又具備必定的邏輯結構和物理結構,被稱爲半結構數據。
(2)存儲系統
目前比較成熟的結構化存儲系統有Oracle、MySQL、Hadoop等。
二、非結構化數據
(1)定義
非結構化數據是數據結構不規則或不完整,沒有預約義的數據模型,不方便用數據庫二維邏輯表來表現的數據。包括全部格式的辦公文檔、文本、圖片、XML, HTML、各種報表、圖像和音頻/視頻信息等等。
(2)存儲方式
1)使用文件系統存儲文件,而在數據庫中存儲訪問路徑。這種方式的優勢是實現簡單,不須要DBMS的高級功能,可是這種方式沒法實現文件的事務性訪問,不便於數據備份和恢復,不便於數據遷移等;
2)使用阿里雲OSS的文件存儲功能。
數據計算分爲實時計算、在線計算、離線計算。
一、數據實時計算
Apache Storm
二、數據在線計算
Elasticsearch
MySQL
三、數據離線計算
HaDoop Hive
一、對數據矩陣科學計算:Python的numpy庫
二、對數據切片等常規處理:強大的pandas庫
三、對數據建模處理:sklearn庫
一、數據的可視化處理:Python中的matplotlib和seaborn庫
二、經常使用的BI可視化工具:Tableu和帆軟
三、ECharts
——————————————
閱讀推薦