我的畢設(shè)選擇了大數(shù)據(jù)方向的題目。大數(shù)據(jù)的第一步就是要拿到足夠的數(shù)據(jù)源?,F(xiàn)實(shí)情況中我們需要的數(shù)據(jù)源分布在不同的業(yè)務(wù)系統(tǒng)中,而這些系統(tǒng)往往是異構(gòu)的,而且我們的分析過程不能影響原有業(yè)務(wù)系統(tǒng)的運(yùn)行。為了把不同的數(shù)據(jù)歸集起來,我開始了解和接觸ETL。本篇介紹阿里的開源ETL工具dataX。
我的理解就是從業(yè)務(wù)系統(tǒng)中根據(jù)所要分析的主題,建立數(shù)據(jù)倉庫的過程。大數(shù)據(jù)的應(yīng)用已經(jīng)非常廣泛,ETL過程現(xiàn)在已經(jīng)發(fā)展成為一個(gè)比較專門的職業(yè),相關(guān)聯(lián)的包括ETL工程師,BI分析師等等。 數(shù)據(jù)的遷移和集成都需要ETL來實(shí)現(xiàn),一般來說在數(shù)據(jù)倉庫的開發(fā)過程中ETL會占到70%到80%的時(shí)間,我了解到的ETL工具包括:
當(dāng)然還有其他挺多,畢竟對于數(shù)據(jù)的處理需求從信息機(jī)書誕生開始就一直存在。上面提到的這些工具比較強(qiáng)大,功能全面,但可能目前知識技能有限,駕馭起來不是很方便,折騰過一段時(shí)間后放棄了。我們常用的一些數(shù)據(jù)庫工具也會帶有導(dǎo)入導(dǎo)出功能,通過文本文件,csv文件等都能完成一個(gè)數(shù)據(jù)中專過程,但相對比較麻煩,而且功能太少對數(shù)據(jù)處理不是很方便。 直到我去云棲大會聽說了DataX ,這個(gè)簡潔,高效,開箱即用的ETL工具,測試過后效率也不錯(cuò),調(diào)試信息也很豐富,才發(fā)現(xiàn)這就是我需要的。官方介紹如下:
dataX本身只是一個(gè)數(shù)據(jù)庫同步框架,通過插件體系完成數(shù)據(jù)同步過程reader插件用于讀入,writer插件用于寫出,中間的framework可以定義transform插件完成數(shù)據(jù)轉(zhuǎn)化的需要。
他的全部使用就如同安裝配置部分所說,僅僅是執(zhí)行一個(gè)python腳本,傳入一個(gè)json配置文件。我們的關(guān)鍵工作就是定義這個(gè)json配置。在bin目錄下也已經(jīng)給出了樣例配置,不過針對不同的數(shù)據(jù)源還是會有些許區(qū)別。 python datax.py -r {YOUR_READER} -w {YOUR_WRITER} 比如我現(xiàn)在需要的是從sqlserver讀入,寫到mysql,那么就可以嘗試: { 'job': { 'content': [ { 'reader': { 'name': 'sqlserverreader', 'parameter': { 'connection': [ { /***省略多條****/ } ], 'column': ['*'], /***省略多條****/ } }, 'writer': { 'name': 'mysqlwriter', 'parameter': { 'column': ['*'], 'connection': [ { /***省略多條****/ } ], 'password': ' /***省略多條****/', 'username': 'root', 'writeMode': 'insert' } } } ], 'setting': { 'speed': { 'channel': '5' } } }}
單核8G的虛擬機(jī),這個(gè)速度還算可以吧,可能是數(shù)據(jù)讀寫不在同一臺機(jī)子上網(wǎng)絡(luò)傳輸也消耗了不少時(shí)間。 |
|