什麼是 Apache Iceberg?
Apache Iceberg 是一種分散式、社群驅動的 Apache 2.0 授權、100% 開放原始碼資料表格式,有助於簡化儲存在資料湖中的大型資料集的資料處理。資料工程師使用 Apache Iceberg,因為它在任何規模上都快速、高效且可靠,並記錄資料集隨時間變化的情況。Apache Iceberg 可輕鬆地與熱門資料處理架構 (如 Apache Spark、Apache Flink、Apache Hive、Presto 等) 整合。
什麼是交易式資料湖?
資料湖是一個集中式儲存庫,可讓您以任何規模存放您的所有結構化和非結構化資料。資料交易是在單一操作中進行的一系列資料交換。例如,當客戶從銀行帳戶取款時,銀行在一次資料交易中同時進行多次資料交換,包括驗證帳戶有足夠的餘額,驗證身分,以及從帳戶中扣除取款。交易式資料湖是一種不僅能大規模存放資料,還支援交易作業,同時確保資料準確、一致,並可讓您追蹤資料和資料結構隨時間變化情況的資料湖。這些屬性統稱為不可部分完成性、一致性、隔離性和耐久性 (ACID):
- 不可部分完成性保證每項交易都是完全成功或失敗的單一事件;沒有中途狀態。
- 一致性確保根據資料湖的定義規則寫入的所有資料都是有效的,從而確保資料準確可靠。
- 隔離性確保多項交易可同時發生,而不會互相干擾,確保每項交易獨立執行。
- 耐久性意味著一旦提交交易,資料不會遺失或損毀。發生系統故障 (例如停電) 時,可以復原資料。
使用 Apache Iceberg 有哪些優勢?
針對交易式資料湖使用 Apache Iceberg 的一些主要優勢包括:
- 熟悉 SQL︰結構式查詢語言 (SQL) 是一種常用的查詢語言,常用於所有類型的應用程式。因為它能夠與不同的程式設計語言很好地整合,資料分析師和開發人員都在學習並使用 SQL,而且它在其語句中使用常見的英文關鍵字,因此也很容易學習。Apache Iceberg 可讓任何熟悉結構化查詢語言 (SQL) 的人員建立資料湖,以及執行大部分資料湖操作,而無需學習新語言。
- 資料一致性:Apache Iceberg 提供資料一致性,以確保任何讀取和寫入資料的使用者都能看到相同的資料。
- 資料結構:Apache Iceberg 可讓您輕鬆變更資料結構 (也稱為結構描述演進),這意味著使用者能夠在不中斷基礎資料的情況下,從資料表中新增、重新命名或移除資料欄。
- 資料版本控制:Apache Iceberg 提供資料版本控制支援,可讓使用者追蹤資料超時的變更。這會啟用時間行程功能,讓使用者能夠存取和查詢資料的歷史版本,並分析更新項和刪除項之間的資料變更。
- 跨平台支援:Apache Iceberg 支援各種不同的儲存系統和查詢引擎,包括 Apache Spark、Apache Hive 和 Presto。這樣一來,在各種不同的資料處理環境中都可輕鬆使用 Iceberg。
- 增量處理:Iceberg 支援增量處理,這允許使用者僅處理自上次執行以來已變更的資料,也稱為 CDC (變更資料擷取)。這有助於改善資料處理效率和效能。
Apache Iceberg 的常見使用案例有哪些?
Apache iceberg 適用於許多資料湖使用案例,包括:
- 資料湖中需要經常刪除的資料表,例如在強制執行資料隱私權法律時。
- 資料湖中需要更新記錄層級的資料表。若當您的資料集在資料結算之後需要頻繁更新,例如銷售資料可能因日後的事件 (例如客戶退貨) 而變更時,此功能非常有用。Iceberg 提供更新個別記錄的功能,而無需重新發佈整個資料集。
- 資料湖中發生無法預期變更的資料表,例如緩慢變更維度 (SCD) 資料表。SCD 的一個範例是一個客戶記錄表,其中包括姓名、位置和聯絡資訊,這些資訊可能會在一段時間以未知的時間間隔變更。
- 當與資料湖進行的交易需要保證資料有效性、耐久性和可靠性時,可以部署 Apache Iceberg 資料表格式以確保 ACID 交易。
- 當需要及時回溯查詢歷史版本的資料以執行趨勢分析、分析一段時間內的資料變更,或還原或回復至先前的版本以修正問題時。
誰在使用 Apache iceberg?
資料工程師、資料管理員、資料分析師和資料科學家都在使用 Apache Iceberg。 資料工程師和管理員可以使用 Apache Iceberg 來設計和建置可擴展的資料儲存系統。 資料分析師和資料科學家可以使用 Apache Iceberg 有效地分析大型資料集。
為什麼要選擇 Apache Iceberg?
Apache Iceberg 提供一種快速、有效的方式來大規模處理大型資料集。其可帶來以下優勢:
- 開放原始碼:Apache Iceberg 是一個開放原始碼專案,這意味著它可以免費使用,並且可自訂以滿足您的特定需求。此外還有一個活躍的開發人員社群,他們不斷改善專案並為專案帶來新的功能。
- 可擴展性:Apache Iceberg 旨在有效地處理大型資料集。它能夠跨多個節點對資料進行分區和整理,這有助於分散工作負載並加速資料處理。
- 效能:Apache Iceberg 具有多種可最佳化查詢效能的功能,包括單欄式儲存和壓縮技術,例如述詞下推和結構描述演進。
- 靈活性:Apache Iceberg 可讓您變更資料的整理方式,以便隨時間演進,而無需重寫查詢或重建資料結構。此外,它還支援多種資料格式和資料來源,這使得它很容易與現有系統整合。
- 可靠性:Apache Iceberg 透過其對交易的支援,確保資料一致性與可靠性。您可以追蹤資料在一段時間的變更方式,並回復至歷史版本,以協助您修正問題。
支援 Iceberg 的 AWS 服務有哪些?
Apache Iceberg 支援熱門的資料處理架構,例如 Apache Spark、Apache Flink、Apache Hive 和 Presto。Amazon Redshift、Amazon Athena、Amazon EMR 和 AWS Glue 等 AWS 服務包括對交易式資料湖架構 (例如 Apache Iceberg) 的原生支援。Apache Iceberg 與支援的 AWS 服務相結合,可支援交易式資料湖,通常以 S3 中的儲存為基礎。
- Amazon Redshift 是一項全受管、AI 賦能的 SQL 分析和資料倉儲服務,可以快速且經濟高效地推動形成客戶的業務決策。Amazon Redshift 提供大規模平行處理 (MPP)、多叢集和無伺服器架構,同時提供零 ETL 功能,可藉助資料共用來推動近即時的分析和 AI/ML 使用案例。客戶可以使用 Amazon Redshift 查詢資料湖中的 Apache Iceberg 資料表 (透過 AWS Glue Data catalog 存取),以及將其與資料倉儲中的資料表聯結以進行全面的分析。
- Amazon Athena 是以開放原始碼架構為基礎建置的無伺服器互動式分析服務,支援開放表格和檔案格式。Athena 提供簡化、靈活的方式來分析其所在位置的數 PB 資料。Athena 針對 Apache Iceberg 資料表提供讀取、時間行程、寫入和 DDL 查詢的原生支援,可使用 Apache Parquet 資料格式,以及適用於其中繼存放區的 AWS Glue 型錄。
- Amazon EMR 是一項大數據解決方案,使用開放原始碼架構 (如 Apache Spark、Hadoop、Presto 和 Hive) 來進行 PB 級資料處理、互動式分析和機器學習。從 Amazon EMR 6.5.0 開始,您可以使用 Apache Spark 3 on Amazon EMR 叢集與 Iceberg 資料表格式。EMR 架構包括 Spark、Trino、Flink 和 Hive support Apache Iceberg。
- AWS Glue 是一種無伺服器、可擴展的資料整合服務,可讓您更輕鬆地探索、準備、移動和整合來自多個來源的資料,以進行分析、機器學習 (ML) 和應用程式開發。 AWS Glue 3.0 及更新版本支援適用於資料湖的 Apache Iceberg 架構。您可以使用 AWS Glue,在 Amazon S3 中的 Iceberg 資料表上執行讀取和寫入操作,或使用 AWS Glue Data Catalog 處理 Iceberg 資料表。此外還支援其他操作,包括插入、更新,以及所有 Spark 查詢和 Spark 寫入。