怎么將ETL技術落地


ETL概述

ETL(Extraction-Transformation-Loading)是將業務系統的數據經過抽取、清洗轉換之后加載到數據倉庫的過程,目的是將企業中的分散、零亂、標准不統一的數據整合到一起,為企業的決策提供分析依據, ETL是BI(商業智能)項目重要的一個環節。

 

 

 

數據治理流程

 

數據挖掘一般是指從大量的數據中通過算法搜索隱藏於其中信息的過程。它通常與計算機科學有關,並通過統計、在線分析處理、情報檢索、機器學習、專家系統(依靠過去的經驗法則)和模式識別等諸多方法來實現上述目標。它的分析方法包括:分類、估計、預測、相關性分組或關聯規則、聚類和復雜數據類型挖掘。

 

 

1)數據的采集

首先得有數據,數據的收集有兩個方式,第一個方式是拿,專業點的說法叫抓取或者爬取,例如搜索引擎就是這么做的,它把網上的所有的信息都下載到它的數據中心,然后你一搜才能搜出來。

 

2)數據的傳輸

一般會通過隊列方式進行,因為數據量實在是太大了,數據必須經過處理才會有用,可是系統處理不過來,只好排好隊,慢慢的處理。

 

3)數據的存儲

現在數據就是金錢,掌握了數據就相當於掌握了錢。要不然網站怎么知道你想買什么呢?就是因為它有你歷史的交易的數據,這個信息可不能給別人,十分寶貴,所以需要存儲下來。

 

4)數據的清洗和分析

上面存儲的數據是原始數據,原始數據多是雜亂無章的,有很多垃圾數據在里面,因而需要清洗和過濾,得到一些高質量的數據。對於高質量的數據,就可以進行分析,從而對數據進行分類,或者發現數據之間的相互關系,得到知識。

 

注:第三與第四個步驟,現存后清洗和先清洗再存,在真是的業務場景中可以適當互換。

 

5)數據的檢索和挖掘

檢索就是搜索,所謂外事問google,內事問百度。挖掘,僅僅搜索出來已經不能滿足人們的要求了,還需要從信息中挖掘出相互的關系。

 

6)數據的加載與應用

怎么友好的展示與傳遞給用戶為數據挖掘工作做好閉環。

 

數據治理工具類

1)數據采集工具

1、針對日志文件類

工具

定義

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在優勢、劣勢

 

2、針對爬蟲類

 

頁面下載 --> 頁面解析 --> 數據存儲

(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文本

 

2)數據清洗工具

1、DataWrangler

基於網絡的服務是斯坦福大學的可視化組設計來清洗和重排數據的.文本編輯非常簡單。例如,當我選擇大標題為“Reported crime in Alabama”的樣本數據的某行的“Alabama”,然后選擇另一組數據的“Alaska”,它會建議提取每州的名字。把鼠標停留在建議上,就可以看到用紅色突出顯示的行。

2、Google Refine

它可以導入導出多種格式的數據,如標簽或逗號分隔的文本文件、Excel、XML和JSON文件。Refine設有內置算法,可以發現一些拼寫不一樣但實際上應分為一組的文本。導入你的數據后,選擇編輯單元格->聚類,編輯,然后選擇要用的算法。數據選項,提供快速簡單的數據分布概貌。這個功能可以揭示那些可能由於輸入錯誤導致的異常——例如,工資記錄不是80,000美元而竟然是800,000美元;或指出不一致的地方——例如薪酬數據記錄之間的差異,有的是計時工資,有的是每周支付,有的是年薪。除了數據管家功能,Google Refine還提供了一些有用的分析工具,例如排序和篩選。

3、Logstash

Logstash 是一款強大的數據處理工具,它可以實現數據傳輸,格式處理,格式化輸出,還有強大的插件功能,常用於日志處理。

3)數據存儲工具

數據存儲主要分為結構化數據的存儲和非結構化數據的存儲。

1、結構化數據

(1)定義

一般指存儲在數據庫中,具有一定邏輯結構和物理結構的數據,最為常見的是存儲在關系數據庫中的數據;非結構化數據:一般指結構化數據以外的數據,這些數據不存儲在數據庫中,而是以各種類型的文本形式存放,其中Web上的一些數據(內嵌於HTML或XML標記中)又具有一定的邏輯結構和物理結構,被稱為半結構數據。

(2)存儲系統

目前比較成熟的結構化存儲系統有Oracle、MySQL、Hadoop等。

2、非結構化數據

(1)定義

非結構化數據是數據結構不規則或不完整,沒有預定義的數據模型,不方便用數據庫二維邏輯表來表現的數據。包括所有格式的辦公文檔、文本、圖片、XML, HTML、各類報表、圖像和音頻/視頻信息等等。

(2)存儲方式

1)使用文件系統存儲文件,而在數據庫中存儲訪問路徑。這種方式的優點是實現簡單,不需要DBMS的高級功能,但是這種方式無法實現文件的事務性訪問,不便於數據備份和恢復,不便於數據遷移等; 

2)使用阿里雲OSS的文件存儲功能。

4)數據計算工具

數據計算分為實時計算、在線計算、離線計算。

1、數據實時計算

Apache Storm

2、數據在線計算

Elasticsearch

MySQL

3、數據離線計算

HaDoop Hive

 

5)數據分析工具

1、對數據矩陣科學計算:Python的numpy庫

2、對數據切片等常規處理:強大的pandas庫

3、對數據建模處理:sklearn庫

6)數據加載工具

1、數據的可視化處理:Python中的matplotlib和seaborn庫

2、常用的BI可視化工具:Tableu和帆軟

3、ECharts

——————————————

閱讀推薦

【大廠】基於rabbitMQ消息中心技術方案

【干貨】一篇文章講透數據挖掘

深度探討知識圖譜建模

【數據中台】數據中心建設規划

【流媒體】ffmpeg+HLS實現直播與回放

技術不能凌駕於業務,但可以引導業務

說框架設計思路

老王說架構

FaaS技術架構

從URL到看到網頁的過程


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM