來源://https://www.cnblogs.com/lcword/p/9558356.html
ETL,是英文 Extract-Transform-Load 的縮寫,用來描述將數據從來源端經過抽取(extract)、轉換(transform)、加載(load)至目的端的過程。ETL 是構建數據倉庫的重要一環,用戶從數據源抽取出所需的數據,經過數據清洗,最終按照預先定義好的數據倉庫模型,將數據加載到數據倉庫中去。
我們在下方列出了 7 款開源的 ETL 工具,並討論了從 ETL 轉向“無 ETL”的過程,因為 ELT 正迅速成為現代數據和雲環境的終極過程。
注:原文包含 11 項 ETL 工具,本文提取了其中開源的 7 項,另增加了一款使用普遍的 Kettle,如需對另外 4 項進行了解,可點擊文末鏈接進行查看。
優秀的 ETL 工具
1、Apache Camel
Apache Camel 是一個非常強大的基於規則的路由以及媒介引擎,該引擎提供了一個基於 POJO 的企業應用模式(Enterprise Integration Patterns)的實現,你可以采用其異常強大且十分易用的 API (可以說是一種 Java 的領域定義語言 Domain Specific Language)來配置其路由或者中介的規則。 通過這種領域定義語言,你可以在你的 IDE 中用簡單的 Java Code 就可以寫出一個類型安全並具有一定智能的規則描述文件。
2、Apache Kafka
Apache Kafka 是一個開源的消息系統,用 Scala 和 Java 寫成。該項目為處理實時數據提供了一個統一、高通量、低延時的平台。有如下特性:
- 通過 O(1) 的磁盤數據結構提供消息的持久化,這種結構對於即使數以TB的消息存儲也能夠保持長時間的穩定性能。
- 高吞吐量:即使是非常普通的硬件 kafka 也可以支持每秒數十萬的消息。
- 支持通過 kafka 服務器和消費機集群來分區消息。
- 支持 Hadoop 並行數據加載。
3、Apatar
Apatar 用 Java 編寫,是一個開源的數據抽取、轉換、 裝載(ETL)項目。模塊化的架構。提供可視化的 Job 設計器與映射工具,支持所有主流數據源,提供靈活的基於 GUI、服務器和嵌入式的部署選項。它具有符合 Unicode 的功能,可用於跨團隊集成數據,填充數據倉庫與數據市場,在連接到其他系統時在代碼少量或沒有代碼的情況下進行維護。
4、Heka
來自 Mozilla 的 Heka 是一個用來收集和整理來自多個不同源的數據的工具,通過對數據進行收集和整理后發送結果報告到不同的目標用於進一步分析。
主頁:http://hekad.readthedocs.io/en/v0.10.0/
5、Logstash
Logstash 是一個應用程序日志、事件的傳輸、處理、管理和搜索的平台。你可以用它來統一對應用程序日志進行收集管理,提供 Web 接口用於查詢和統計。Logstash 現在是 ElasticSearch 家族成員之一。
主頁:https://www.elastic.co/products/logstash
6、Scriptella
Scriptella 是一個開源的 ETL (抽取-轉換-加載)工具和一個腳本執行工具,采用 Java 開發。Scriptella 支持跨數據庫的 ETL 腳本,並且可以在單個的 ETL 文件中與多個數據源運行。Scriptella 可與任何 JDBC / ODBC 兼容的驅動程序集成,並提供與非 JDBC 數據源和腳本語言的互操作性的接口。它還可以與 Java EE,Spring,JMX,JNDI 和 JavaMail 集成。
7、Talend
Talend (踏藍) 是第一家針對的數據集成工具市場的 ETL(數據的提取 Extract、傳輸 Transform、載入Load)開源軟件供應商。Talend 以它的技術和商業雙重模式為 ETL 服務提供了一個全新的遠景。它打破了傳統的獨有封閉服務,提供了一個針對所有規模的公司的公開的,創新的,強大的靈活的軟件解決方案。最終,由於 Talend 的出現,數據整合方案不再被大公司所獨享。
8、Kettle
Kettle 是一款國外開源的 etl 工具,純 java 編寫,綠色無需安裝,數據抽取高效穩定(數據遷移工具)。Kettle 中有兩種腳本文件,transformation 和 job,transformation 完成針對數據的基礎轉換,job 則完成整個工作流的控制。
ELT 初探
雖然 Stitch 也是一個 ETL 服務企業,但其 CEO 在 TechTarget 雜志的訪談中也稱贊了 AWS Athena 服務,同時提出了從 ETL 轉向 ELT 的需要。
在他看來,“無 ETL”即 ETL 過程由提取(Extract),加載(Load),變換(Transform)代替,其中數據變換根據下游使用的需要而在 SQL 中進行,而不是在加載階段期間。他承認 ETL 公司來推廣 ELT 概念有點讓人匪夷所思,但他解釋了這么做的好處。
“使用 Athena,你可以從數據源中提取數據,經過少量或不加載預處理后進行加載。 這種風格的 ELT 是大多數使用案例的優秀模型,因為它能產生更簡單的架構,使分析人員更好地了解原始數據的變換過程。”點此了解更多。
使用 ELT 方法,在提取完成之后,數據加載會立即開始,而不用等待“恰當的”數據變換操作。 轉換還可以在查詢時運行,比 ETL 更省時,因為 ETL 需要用戶等待轉換完成。 ELT 允許 BI 用戶和分析人員無限制地訪問整個原始數據,為用戶提供了更大的靈活性,使之能更好地支持該業務。