【ETL工具Datax、sqoop、kettle 的區別】一、Sqoop主要特點:
1.可以將關系型數據庫中的數據導入到hdfs , hive , hbase等hadoop組件中 , 也可以將hadoop組件中的數據導入到關系型數據庫中;
2.sqoop在導入導出數據時 , 充分采用了map-reduce計算框架(默認map數為4) , 根據輸入條件生成一個map-reduce作業(只有map , 沒有reduce) , 在hadoop集群中運行 。采用map-reduce框架同時在多個節點進行import或者export操作 , 熟讀比單節點運行多個并行效率高 , 同時提供了良好的并發性和容錯性;
3.支持insert , update模式 , 可以選擇參數 , 若內容存在就更新 , 若不存在就插入;
4.對國外主流關系型數據庫支持性更好 。
二、Datax 主要特點:1、異構數據庫和文件系統之間的數據交換;2、采用 Framework + plugin 架構構建 , Framework 處理了緩沖 , 流控 , 并發 , 上下文加載等高速數據交換的大部分技術問題 , 提供了簡單的接口與插件交互 , 插件僅需實現對數據處理系統的訪問;3、數據傳輸過程在單進程(單進程多線程)內完成 , 全內存操作 , 不讀寫磁盤 , 也沒有 IPC(進程之間的通信);4、開放式的框架 , 開發者可以在極短的時間開發一個新插件以快速支持新的數據庫/文件系統 。 三、Kettle 主要特點:1、kettle (數據抽取、清洗、轉換、裝載)是由 java 編寫,可以在 Window、Linux、Unix 上運行 。支持多數據源, 多種中間件的專業 ETL 工具 。2、支持圖形化 GUI 設計界面 , 組件多樣性 , 支持 http 請求,上手簡單支持拖拽 , 支持 sql , 可以編寫js ,可以編寫一些 java 代碼 , 然后以工作流的形式流轉 。如果沒有沖突可以并行執行 , 并行開發 。在工具內可以查看 讀 寫 修改 輸出 更新 拒絕 錯誤 等 一些參數 , 快速定位和糾錯 。 四、Sqoop 和 Datax 的區別:1、sqoop 采用 map-reduce 計算框架進行導入導出 , 而 datax 僅僅在運行 datax 的單臺機器上進行數據的抽取和加載 , 速度比 sqoop 慢了許多;2、sqoop 只可以在關系型數據庫和 hadoop 組件之間進行數據遷移 , 而在 hadoop 相關組件之間 , 比如hive 和 hbase 之間就無法使用 sqoop 互相導入導出數據 , 同時在關系型數據庫之間 , 比如 mysql 和oracle 之間也無法通過 sqoop 導入導出數據 。與之相反 , datax 能夠分別實現關系型數據庫 hadoop 組件之間、關系型數據庫之間、hadoop 組件之間的數據遷移;3、sqoop 是專門為 hadoop 而生 , 對 hadoop 支持度好 , 而 datax 可能會出現不支持高版本 hadoop 的現象;4、sqoop 只支持官方提供的指定幾種關系型數據庫和 hadoop 組件之間的數據交換 , 而在 datax 中 , 用戶只需根據自身需求修改文件 , 生成相應 rpm 包 , 自行安裝之后就可以使用自己定制的插件; 五、Kettle 與 DataX 的區別:1、Kettle 擁有自己的管理控制臺 , 可以直接在客戶端進行 etl 任務制定 , 不過是 CS 架構(服務器-客戶機) , 而不支持 BS(瀏覽器-服務器)架構 。DataX 并沒有界面 , 界面完全需要自己開發 , 增加了很大工作量 。2、Kettle 可以與我們自己的工程進行集成 , 通過 JAVA 代碼集成即可 , 可以在 java 中調用 kettle 的轉換、執行、結束等動作 , 這個還是有意義的 , 而 DataX 是不支持的 , DataX 是以執行腳本的方式運行任務的 , 當然完全吃透源碼的情況下 , 應該也是可以調用的 。3、支持的數據庫 , 都支持的比較齊全 , kettle 支持的應該更多 , DataX 是阿里開發 , 可以更好地支持阿里自身的數據庫系列 , 如 ODPS、ADS 等4、Kettle 已經加入 BI 組織 Pentaho , 加入后 kettle 的開發粒度和被關注度更進一步提升5、DataX 開源的支持粒度不高 , 關注度遠沒有 kettle 高 , 代碼提交次數更是少的很 。 六、Kettle 與 Sqoop 的區別1、Kettle 中有兩種腳本文件 , transformation 和 job , transformation 完成針對數據的基礎轉換 , job則完成整個工作流的控制;Sqoop 主要用于在 Hadoop(Hive)與傳統的數據庫(mysql、postgresql...)間進行數據的傳遞2、kettle 有圖形化的操作界面 , 只需要描述你想做什么 , 而不是你想怎么做;sqoop 沒有圖形化界面 , 具體的數據流向需要手工配置 。3、kettle 底層使用多線程以提高效率;Sqoop 專為大數據批量傳輸設計 , 能夠分割數據集并創建 Hadoop任務來處理每個區塊 。4、kettle 可以利用 transformation 在數據傳輸過程中對數據的一些轉換處理;Sqoop 只是一個用來將Hadoop 和關系型數據庫中的數據相互轉移的工具5、kettle 數據的具體流向可以指定 , 可以是各種數據的存儲工具;sqoop 只是完成 hdfs 到關系型數據庫或者 關系型數據庫到 hdfs 的數據傳輸 , 在傳輸的過程中保證傳輸數據的類型
經驗總結擴展閱讀
- Seal-Report: 開放式數據庫報表工具
- Qt Designer、PyUIC、PyRcc PyCharm安裝PyQt5及其工具詳細教程
- 紅茶漬怎么清除
- wps分欄工具在哪
- 結合springboot實現,這里對接的是easy版本,工具用的是IDEA,WebStrom 支付寶沙箱服務
- InetAddress.getLocalHost 執行很慢?
- 冬季怎么使衣服干的快
- NFC寫入手機后怎么用(手機nfc讀取寫入工具)
- csv2ECharts,**一行命令查看數據趨勢圖 工具分享**
- 常用的絕緣工具有哪些
