Apache doris Datax DorisWriter擴展使用方法

DataX 是阿里云 DataWorks數(shù)據(jù)集成 的開源版本遣妥,在阿里巴巴集團內(nèi)被廣泛使用的離線數(shù)據(jù)同步工具/平臺拙毫。DataX 實現(xiàn)了包括 MySQL颗祝、Oracle辉哥、SqlServer、Postgre耳贬、HDFS踏堡、Hive、ADS咒劲、HBase顷蟆、TableStore(OTS)诫隅、MaxCompute(ODPS)、Hologres帐偎、DRDS 等各種異構(gòu)數(shù)據(jù)源之間高效的數(shù)據(jù)同步功能

Apache Doris是一個現(xiàn)代化的MPP分析型數(shù)據(jù)庫產(chǎn)品逐纬。僅需亞秒級響應時間即可獲得查詢結(jié)果,有效地支持實時數(shù)據(jù)分析削樊。Apache Doris的分布式架構(gòu)非常簡潔豁生,易于運維,并且可以支持10PB以上的超大數(shù)據(jù)集漫贞。

Apache Doris可以滿足多種數(shù)據(jù)分析需求甸箱,例如固定歷史報表,實時數(shù)據(jù)分析迅脐,交互式數(shù)據(jù)分析和探索式數(shù)據(jù)分析等芍殖。令您的數(shù)據(jù)分析工作更加簡單高效!

為了更好的擴展Apache doris生態(tài)谴蔑,為doris用戶提供更方便的數(shù)據(jù)導入豌骏,社區(qū)開發(fā)擴展支持了Datax DorisWriter,使大家更方便Datax進行數(shù)據(jù)進入

1.場景

這里演示介紹的使用 Doris 的 Datax 擴展 DorisWriter實現(xiàn)從Mysql數(shù)據(jù)定時抽取數(shù)據(jù)導入到Doris數(shù)倉表里

2.編譯 DorisWriter

這個的擴展的編譯可以不在 doris 的 docker 編譯環(huán)境下進行隐锭,本文是在 windows 下的 WLS 下進行編譯的

首先從github上拉取源碼

git clone https://github.com/apache/incubator-doris.git

進入到incubator-doris/extension/DataX/ 執(zhí)行編譯

首先執(zhí)行:

sh init_env.sh

這個腳本主要用于構(gòu)建 DataX 開發(fā)環(huán)境窃躲,他主要進行了以下操作:

  1. 將 DataX 代碼庫 clone 到本地。

  2. doriswriter/ 目錄軟鏈到 DataX/doriswriter 目錄成榜。

  3. DataX/pom.xml 文件中添加 <module>doriswriter</module> 模塊框舔。

  4. DataX/core/pom.xml 文件中的 httpclient 版本從 4.5 改為 4.5.13.

    httpclient v4.5 在處理 307 轉(zhuǎn)發(fā)時有bug。

這個腳本執(zhí)行后赎婚,開發(fā)者就可以進入 DataX/ 目錄開始開發(fā)或編譯了刘绣。因為做了軟鏈,所以任何對 DataX/doriswriter 目錄中文件的修改挣输,都會反映到 doriswriter/ 目錄中纬凤,方便開發(fā)者提交代碼

2.1 開始編譯

這里我為了加快編譯速度去掉了很多無用的插件:這里直接在Datax目錄下的pom.xml里注釋掉就行

hbase11xreader
hbase094xreader
tsdbreader
oceanbasev10reader
odpswriter
hdfswriter
adswriter
ocswriter
oscarwriter
oceanbasev10writer

然后進入到incubator-doris/extension/DataX/ 目錄下的 Datax 目錄,執(zhí)行編譯

這里我是執(zhí)行的將 Datax 編譯成 tar 包撩嚼,和官方的編譯命令不太一樣停士。

mvn -U clean package assembly:assembly -Dmaven.test.skip=true
image-20210903132250723.png
image-20210903132539511.png

編譯完成以后,tar 包在 Datax/target 目錄下完丽,你可以將這tar包拷貝到你需要的地方恋技,這里我是直接在 datax 執(zhí)行測試,這里因為的 python 版本是 3.x版本逻族,需要將 bin 目錄下的三個文件換成 python 3能之別的版本蜻底,這個你可以去下面的地址下載:

https://github.com/WeiYe-Jing/datax-web/tree/master/doc/datax-web/datax-python3

將下載的三個文件替換 bin 目錄下的文件以后,整個編譯聘鳞,安裝就完成了

如果你編譯不成功也可以從我的百度網(wǎng)盤上下載編譯好的包薄辅,注意我上邊編譯去掉的那些插件

鏈接:https://pan.baidu.com/s/1hXYkpkrUE2qW4j98k2Wu7A 
提取碼:3azi

3.數(shù)據(jù)接入

這個時候我們就可以開始使用 Datax 的doriswriter擴展開始從 Mysql(或者其他數(shù)據(jù)源)直接將數(shù)據(jù)抽取出來導入到 Doris 表中了要拂。

3.1 Mysql 數(shù)據(jù)庫準備

下面是我數(shù)據(jù)庫的建表腳本(mysql 8):

CREATE TABLE `order_analysis` (
  `date` varchar(19) DEFAULT NULL,
  `user_src` varchar(9) DEFAULT NULL,
  `order_src` varchar(11) DEFAULT NULL,
  `order_location` varchar(2) DEFAULT NULL,
  `new_order` int DEFAULT NULL,
  `payed_order` int DEFAULT NULL,
  `pending_order` int DEFAULT NULL,
  `cancel_order` int DEFAULT NULL,
  `reject_order` int DEFAULT NULL,
  `good_order` int DEFAULT NULL,
  `report_order` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT

示例數(shù)據(jù)

INSERT INTO `sql12298540`.`order_analysis` (`date`, `user_src`, `order_src`, `order_location`, `new_order`, `payed_order`, `pending_order`, `cancel_order`, `reject_order`, `good_order`, `report_order`) VALUES ('2015-10-12 00:00:00', '廣告二維碼', 'Android APP', '上海', 15253, 13210, 684, 1247, 1000, 10824, 862);
INSERT INTO `sql12298540`.`order_analysis` (`date`, `user_src`, `order_src`, `order_location`, `new_order`, `payed_order`, `pending_order`, `cancel_order`, `reject_order`, `good_order`, `report_order`) VALUES ('2015-10-14 00:00:00', '微信朋友圈H5頁面', 'iOS APP', '廣州', 17134, 11270, 549, 204, 224, 10234, 773);
INSERT INTO `sql12298540`.`order_analysis` (`date`, `user_src`, `order_src`, `order_location`, `new_order`, `payed_order`, `pending_order`, `cancel_order`, `reject_order`, `good_order`, `report_order`) VALUES ('2015-10-17 00:00:00', '地推二維碼掃描', 'iOS APP', '北京', 16061, 9418, 1220, 1247, 458, 13877, 749);
INSERT INTO `sql12298540`.`order_analysis` (`date`, `user_src`, `order_src`, `order_location`, `new_order`, `payed_order`, `pending_order`, `cancel_order`, `reject_order`, `good_order`, `report_order`) VALUES ('2015-10-17 00:00:00', '微信朋友圈H5頁面', '微信公眾號', '武漢', 12749, 11127, 1773, 6, 5, 9874, 678);
INSERT INTO `sql12298540`.`order_analysis` (`date`, `user_src`, `order_src`, `order_location`, `new_order`, `payed_order`, `pending_order`, `cancel_order`, `reject_order`, `good_order`, `report_order`) VALUES ('2015-10-18 00:00:00', '地推二維碼掃描', 'iOS APP', '上海', 13086, 15882, 1727, 1764, 1429, 12501, 625);
INSERT INTO `sql12298540`.`order_analysis` (`date`, `user_src`, `order_src`, `order_location`, `new_order`, `payed_order`, `pending_order`, `cancel_order`, `reject_order`, `good_order`, `report_order`) VALUES ('2015-10-18 00:00:00', '微信朋友圈H5頁面', 'iOS APP', '武漢', 15129, 15598, 1204, 1295, 1831, 11500, 320);
INSERT INTO `sql12298540`.`order_analysis` (`date`, `user_src`, `order_src`, `order_location`, `new_order`, `payed_order`, `pending_order`, `cancel_order`, `reject_order`, `good_order`, `report_order`) VALUES ('2015-10-19 00:00:00', '地推二維碼掃描', 'Android APP', '杭州', 20687, 18526, 1398, 550, 213, 12911, 185);
INSERT INTO `sql12298540`.`order_analysis` (`date`, `user_src`, `order_src`, `order_location`, `new_order`, `payed_order`, `pending_order`, `cancel_order`, `reject_order`, `good_order`, `report_order`) VALUES ('2015-10-19 00:00:00', '應用商店', '微信公眾號', '武漢', 12388, 11422, 702, 106, 158, 5820, 474);
INSERT INTO `sql12298540`.`order_analysis` (`date`, `user_src`, `order_src`, `order_location`, `new_order`, `payed_order`, `pending_order`, `cancel_order`, `reject_order`, `good_order`, `report_order`) VALUES ('2015-10-20 00:00:00', '微信朋友圈H5頁面', '微信公眾號', '上海', 14298, 11682, 1880, 582, 154, 7348, 354);
INSERT INTO `sql12298540`.`order_analysis` (`date`, `user_src`, `order_src`, `order_location`, `new_order`, `payed_order`, `pending_order`, `cancel_order`, `reject_order`, `good_order`, `report_order`) VALUES ('2015-10-21 00:00:00', '地推二維碼掃描', 'Android APP', '深圳', 22079, 14333, 5565, 1742, 439, 8246, 211);
INSERT INTO `sql12298540`.`order_analysis` (`date`, `user_src`, `order_src`, `order_location`, `new_order`, `payed_order`, `pending_order`, `cancel_order`, `reject_order`, `good_order`, `report_order`) VALUES ('2015-10-22 00:00:00', 'UC瀏覽器引流', 'iOS APP', '上海', 28968, 18151, 7212, 2373, 1232, 10739, 578);

3.2 doris數(shù)據(jù)庫準備

下面是我上面數(shù)據(jù)表在doris對應的建表腳本

CREATE TABLE `order_analysis` (
  `date` datetime DEFAULT NULL,
  `user_src` varchar(30) DEFAULT NULL,
  `order_src` varchar(50) DEFAULT NULL,
  `order_location` varchar(10) DEFAULT NULL,
  `new_order` int DEFAULT NULL,
  `payed_order` int DEFAULT NULL,
  `pending_order` int DEFAULT NULL,
  `cancel_order` int DEFAULT NULL,
  `reject_order` int DEFAULT NULL,
  `good_order` int DEFAULT NULL,
  `report_order` int DEFAULT NULL
) ENGINE=OLAP
DUPLICATE KEY(`date`,user_src)
COMMENT "OLAP"
DISTRIBUTED BY HASH(`user_src`) BUCKETS 1
PROPERTIES (
"replication_num" = "3",
"in_memory" = "false",
"storage_format" = "V2"
);

3.3 Datax Job JSON文件

創(chuàng)建并編輯datax job任務json文件,并保存到指定目錄

{
    "job": {
        "setting": {
            "speed": {
                "channel": 1
            },
            "errorLimit": {
                "record": 0,
                "percentage": 0
            }
        },
        "content": [
            {
                "reader": {
                    "name": "mysqlreader",
                    "parameter": {
                        "username": "root",
                        "password": "zhangfeng",
                        "column": ["date","user_src","order_src","order_location","new_order","payed_order"," pending_order"," cancel_order"," reject_order"," good_order"," report_order" ],
                        "connection": [ { "table": [ "order_analysis" ], "jdbcUrl": [ "jdbc:mysql://localhost:3306/demo" ] } ] }
                },
                "writer": {
                    "name": "doriswriter",
                    "parameter": {
                        "feLoadUrl": ["fe:8030"],
                        "beLoadUrl": ["be1:8040","be1:8040","be1:8040","be1:8040","be1:8040","be1:8040"],
                        "jdbcUrl": "jdbc:mysql://fe:9030/",
                        "database": "test_2",
                        "table": "order_analysis",
                        "column": ["date","user_src","order_src","order_location","new_order","payed_order"," pending_order"," cancel_order"," reject_order"," good_order"," report_order"],
                        "username": "root",
                        "password": "",
                        "postSql": [],
                        "preSql": [],
                        "loadProps": {
                        },
                        "maxBatchRows" : 10000,
                        "maxBatchByteSize" : 104857600,
                        "labelPrefix": "datax_doris_writer_demo_",
                        "lineDelimiter": "\n"
                    }
                }
            }
        ]
    }
}

這塊 Mysql reader 使用方式參照:

https://github.com/alibaba/DataX/blob/master/mysqlreader/doc/mysqlreader.md

doriswriter的使用及參數(shù)說明:

https://github.com/apache/incubator-doris/blob/master/extension/DataX/doriswriter/doc/doriswriter.md

4.執(zhí)行Datax數(shù)據(jù)導入任務

python bin/datax.py doris.json

然后就可以看到執(zhí)行結(jié)果:

image-20210903134043421.png

再去 Doris 數(shù)據(jù)庫中查看你的表站楚,數(shù)據(jù)就已經(jīng)導入進去了脱惰,任務執(zhí)行結(jié)束

因為 Datax 的任務是要靠外部觸發(fā)才能執(zhí)行,這里你可以使用Linux的crontab或者海豚調(diào)度之類的來控制任務運行

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末窿春,一起剝皮案震驚了整個濱河市拉一,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌谁尸,老刑警劉巖舅踪,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件纽甘,死亡現(xiàn)場離奇詭異良蛮,居然都是意外死亡,警方通過查閱死者的電腦和手機悍赢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門决瞳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人左权,你說我怎么就攤上這事皮胡。” “怎么了赏迟?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵屡贺,是天一觀的道長。 經(jīng)常有香客問我锌杀,道長甩栈,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任糕再,我火速辦了婚禮量没,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘突想。我一直安慰自己殴蹄,他們只是感情好,可當我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布猾担。 她就那樣靜靜地躺著袭灯,像睡著了一般。 火紅的嫁衣襯著肌膚如雪绑嘹。 梳的紋絲不亂的頭發(fā)上稽荧,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天,我揣著相機與錄音圾叼,去河邊找鬼蛤克。 笑死捺癞,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的构挤。 我是一名探鬼主播髓介,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼筋现!你這毒婦竟也來了唐础?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤矾飞,失蹤者是張志新(化名)和其女友劉穎一膨,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體洒沦,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡豹绪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了申眼。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瞒津。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖括尸,靈堂內(nèi)的尸體忽然破棺而出巷蚪,到底是詐尸還是另有隱情,我是刑警寧澤濒翻,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布屁柏,位于F島的核電站,受9級特大地震影響有送,放射性物質(zhì)發(fā)生泄漏淌喻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一娶眷、第九天 我趴在偏房一處隱蔽的房頂上張望似嗤。 院中可真熱鬧,春花似錦届宠、人聲如沸烁落。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽伤塌。三九已至,卻和暖如春轧铁,著一層夾襖步出監(jiān)牢的瞬間每聪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留药薯,地道東北人绑洛。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像童本,于是被迫代替她去往敵國和親真屯。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容