DataX知識點總結

2022-10-10 22:09:17 字數 3041 閱讀 5450

datax 是阿里巴巴開源的乙個異構資料來源離線同步工具,致力於實現包括關係型資料庫(mysql、oracle等)、hdfs、hive、odps、hbase、ftp等各種異構資料來源之間穩定高效的資料同步功能。

為了解決異構資料來源同步問題,datax將複雜的網狀的同步鏈路變成了星型資料鏈路,datax作為中間傳輸載體負責連線各種資料來源。當需要接入乙個新的資料來源的時候,只需要將此資料來源對接到datax,便能跟已有的資料來源做到無縫資料同步。

datax本身作為離線資料同步框架,採用framework + plugin架構構建。將資料來源讀取和寫入抽象成為reader/writer外掛程式,納入到整個同步框架中。

舉例來說,使用者提交了乙個datax作業,並且配置了總的併發度為20,目的是對乙個有100張分表的mysql資料來源進行同步。datax的排程決策思路是:

1)datax job根據分庫分表切分策略,將同步工作分成100個task。

2)根據配置的總的併發度20,以及每個task group的併發度5,datax計算共需要分配4個taskgroup。

3)4個taskgroup平分100個task,每乙個taskgroup負責執行25個task。

python bin/datax.py path/to/your/job.json
(使用datax向hdfs同步資料時,需確保目標路徑已存在)

檢視datax配置檔案模板

hfds writer並未提供nullformat引數:也就是使用者並不能自定義null值寫到hfds檔案中的儲存格式。預設情況下,hfds writer會將null值儲存為空字串(''),而hive預設的null值儲存格式為\n。所以後期將datax同步的檔案匯入hive表就會出現問題。

解決該問題的方案有兩個:

一是修改datax hdfs writer的原始碼,增加自定義null值儲存格式的邏輯

二是在hive中建表時指定null值儲存格式為空字串('')

通常情況下,離線資料同步任務需要每日定時重複執行,故hdfs上的目標路徑通常會包含一層日期,以對每日同步的資料加以區分,也就是說每日同步資料的目標路徑不是固定不變的,因此datax配置檔案中hdfs writer的path引數的值應該是動態的。為實現這一效果,就需要使用datax傳參的功能。

datax傳參的用法如下,在json配置檔案中使用$引用引數,在提交任務時使用-p"-dparam=value"傳入引數值,具體示例如下。

datax3.0提供了包括通道(併發)、記錄流、位元組流三種流控模式,可以隨意控制你的作業速度,讓你的作業在資料庫可以承受的範圍內達到最佳的同步速度。

引數

說明

job.setting.speed.channel

總併發數

job.setting.speed.record

總record限速

job.setting.speed.byte

總byte限速

core.transport.channel.speed.record

單個channel的record限速,預設值為10000(10000條/s)

core.transport.channel.speed.byte

單個channel的byte限速,預設值1024*1024(1m/s)

注意事項:

1.若配置了總record限速,則必須配置單個channel的record限速

2.若配置了總byte限速,則必須配置單個channe的byte限速

3.若配置了總record限速和總byte限速,channel併發數引數就會失效。因為配置了總record限速和總byte限速之後,實際channel併發數是通過計算得到的:

計算公式為:

min(總byte限速/單個channle的byte限速,總record限速/單個channel的record限速)

當提公升datax job內channel併發數時,記憶體的占用會顯著增加,因為datax作為資料交換通道,在記憶體中會快取較多的資料。例如channel中會有乙個buffer,作為臨時的資料交換的緩衝區,而在部分reader和writer的中,也會存在一些buffer,為了防止oom等錯誤,需調大jvm的堆記憶體。

建議將記憶體設定為4g或者8g,這個也可以根據實際情況來調整。

調整jvm xms xmx引數的兩種方式:一種是直接更改datax.py指令碼;另一種是在啟動的時候,加上對應的引數,如下:

python datax/bin/datax.py --jvm="

-xms8g -xmx8g

" /path/to/your/job.json

知識點總結

1,迴圈中的中斷 continue 跳出此次迴圈,繼續for迴圈 break 跳出當前for迴圈 return 跳出當前方法 2,字串的操作 componentseparatedbystring stringbyreplacingoccurencesofstring withstring iskin...

知識點總結

oncreate onstrat onresume onpause onstop onrestart ondestroy standard 啟動activity都會產生乙個新的activity 預設模式 singletop 啟動activity允許多個,但不允許重疊 singletask 只允許有乙...

知識點總結

function go go 呼叫 go為變數名 setinterval go,1000 1000ms clearinterval 關閉定時器 function abc a,b 2,3 5undefined 未定義 null 空 nan 非數值 string 字串 var a 123 數字型別 va...