数据集成--ETL工具
背景:不同平臺(tái)都可以獲得用戶,這些用戶之間可能是交叉重復(fù),比如你之前在A平臺(tái)注冊(cè)了,后來你又在B平臺(tái)注冊(cè)了。而不同的平臺(tái)存儲(chǔ)數(shù)據(jù)的表結(jié)構(gòu),表字段可能不同。最有代表性的,美團(tuán)合并了大眾點(diǎn)評(píng),兩家外賣平臺(tái)的數(shù)據(jù)必須整合在一起,才能發(fā)揮更大的商業(yè)價(jià)值----數(shù)據(jù)集成。
數(shù)據(jù)集成的兩種架構(gòu):ELT 和 ETL
一般來說,數(shù)據(jù)工程師的工作包括了數(shù)據(jù)的 ETL 和數(shù)據(jù)挖掘算法的實(shí)現(xiàn)。算法實(shí)現(xiàn)可以理解,就是通過數(shù)據(jù)挖掘算法,從數(shù)據(jù)倉庫中找到“金子“。
ETL實(shí)現(xiàn)數(shù)據(jù)抽取、轉(zhuǎn)換、加載這三個(gè)過程
抽取是將數(shù)據(jù)從已有的數(shù)據(jù)源中提取出來。
轉(zhuǎn)換是對(duì)原始數(shù)據(jù)進(jìn)行處理,例如將表輸入 1 和 表輸入 2 進(jìn)行連接形成一張新的表。
根據(jù)轉(zhuǎn)換發(fā)生的順序和位置,數(shù)據(jù)集成可以分為 ETL 和 ELT 兩種架構(gòu)。
ETL 的過程為提取 (Extract)——轉(zhuǎn)換 (Transform)——加載 (Load),在數(shù)據(jù)源抽取后首先進(jìn)行轉(zhuǎn)換,然后將轉(zhuǎn)換的結(jié)果寫入目的地。
ELT 的過程則是提取 (Extract)——加載 (Load)——變換 (Transform),在抽取后將結(jié)果先寫入目的地,然后利用數(shù)據(jù)庫的聚合分析能力或者外部計(jì)算框架,如 Spark 來完成轉(zhuǎn)換的步驟。
目前數(shù)據(jù)集成的主流架構(gòu)是 ETL,但未來使用 ELT 作為數(shù)據(jù)集成架構(gòu)的將越來越多。
ELT 和 ETL 相比,最大的區(qū)別是“重抽取和加載,輕轉(zhuǎn)換”,從而可以用更輕量的方案搭建起一個(gè)數(shù)據(jù)集成平臺(tái)。一方面更省時(shí),另一方面 ELT 允許 BI 分析人員無限制地訪問整個(gè)原始數(shù)據(jù),從而使BI對(duì)于數(shù)據(jù)處理更加靈活,更好的支持業(yè)務(wù)。
ETL 工具有哪些?
開源軟件:Kettle、Talend、Apatar、Scriptella、DataX、Sqoop 等
Kettle 工具的使用
Kettle 是一款國外開源的 ETL 工具,純 Java 編寫,可以在 Window 和 Linux 上運(yùn)行,不需要安裝就可以使用。
下載地址:https://community.hitachivantara.com/docs/DOC-1009855
在使用 Kettle 之前還需要安裝數(shù)據(jù)庫軟件和 Java 運(yùn)行環(huán)境(JRE)
Kettle 采用可視化的方式進(jìn)行操作,來對(duì)數(shù)據(jù)庫間的數(shù)據(jù)進(jìn)行遷移。它包括了兩種腳本:Transformation 轉(zhuǎn)換和 Job 作業(yè)。
Transformation(轉(zhuǎn)換):相當(dāng)于一個(gè)容器,對(duì)數(shù)據(jù)操作進(jìn)行了定義。數(shù)據(jù)操作就是數(shù)據(jù)從輸入到輸出的一個(gè)過程。在通常的工作中,我們會(huì)把任務(wù)分解成為不同的作業(yè),然后再把作業(yè)分解成多個(gè)轉(zhuǎn)換。
Job(作業(yè)):相比于轉(zhuǎn)換是個(gè)更大的容器,它負(fù)責(zé)將轉(zhuǎn)換組織起來完成某項(xiàng)作業(yè)。
Transformation 可以分成三個(gè)步驟,它包括了輸入、中間轉(zhuǎn)換以及輸出。
在 Transformation 中包括兩個(gè)主要概念:Step 和 Hop。
Step(步驟):Step 是轉(zhuǎn)換的最小單元。在上面這個(gè)轉(zhuǎn)換中,就包括了表輸入、值映射、去除重復(fù)記錄、表輸出這 4 個(gè)步驟;
Hop(跳躍線):用來在轉(zhuǎn)換中連接 Step。它代表了數(shù)據(jù)的流向。
如何創(chuàng)建 Job(作業(yè)):完整的任務(wù),實(shí)際上是將創(chuàng)建好的轉(zhuǎn)換和作業(yè)串聯(lián)起來。在這里 Job 包括兩個(gè)概念:Job Entry、Hop。
Job Entry(工作實(shí)體):Job Entry 是 Job 內(nèi)部的執(zhí)行單元,每一個(gè) Job Entry 都是用來執(zhí)行具體的任務(wù),比如調(diào)用轉(zhuǎn)換,發(fā)送郵件等。
Hop:指連接 Job Entry 的線。并且它可以指定是否有條件地執(zhí)行。
案例 1:如何將文本文件的內(nèi)容轉(zhuǎn)化到 MySQL 數(shù)據(jù)庫中
總結(jié)
以上是生活随笔為你收集整理的数据集成--ETL工具的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据清洗---占据了数据分析师80%的时
- 下一篇: 数据可视化(推荐Tableau、 Pow