Passa al contenuto principale

Cos'è Apache Iceberg?

Apache Iceberg è un formato di tabella dati distribuito, guidato dalla comunità, con licenza Apache 2.0 e 100% open source che aiuta a semplificare l'elaborazione dei dati su set di dati di grandi dimensioni archiviati in data lake. Gli ingegneri dei dati utilizzano Apache Iceberg perché è veloce, efficiente e affidabile su qualsiasi scala e registra il cambiamento del set di dati nel tempo. Apache Iceberg offre semplici integrazioni con i più diffusi framework di elaborazione dati come Apache Spark, Apache Flink, Apache Hive, Presto e altri.

Cos'è un data lake transazionale?

Un data lake è un repository centralizzato che consente di archiviare tutti i dati strutturati e non strutturati su qualsiasi scala. Una transazione di dati è una serie di scambi di dati condotti in un'unica operazione. Ad esempio, quando un cliente preleva denaro da un conto bancario, la banca effettua diversi scambi di dati contemporaneamente in un'unica transazione di dati, tra cui la verifica che il conto abbia un saldo sufficiente, la verifica dell'identità e l'addebito del prelievo dal conto. Un data lake transazionale è un tipo di data lake che non solo archivia dati su larga scala, ma supporta anche operazioni transazionali e garantisce che i dati siano accurati, coerenti e consente di tenere traccia di come i dati e la struttura dei dati cambiano nel tempo. Queste proprietà sono note collettivamente come Atomicità, Consistenza, Isolamento e Durata (ACID):

  • L'atomicità garantisce che ogni transazione sia un singolo evento che ha successo o fallisce completamente; non esiste uno stato intermedio.

  • La coerenza garantisce che tutti i dati scritti siano validi secondo le regole definite del data lake, garantendo che i dati siano accurati e affidabili.

  • L'isolamento garantisce che più transazioni possano avvenire contemporaneamente senza interferire l'una con l'altra, assicurando che ciascuna transazione venga eseguita in modo indipendente.

  • La durabilità significa che i dati non vengono persi o danneggiati una volta inviata una transazione. I dati possono essere recuperati in caso di guasto del sistema, ad esempio un'interruzione dell'alimentazione.

Quali sono i vantaggi dell'uso di Apache Iceberg?

Alcuni dei principali vantaggi dell'utilizzo di Apache Iceberg per i data lake transazionali includono:

  • Familiarità con SQL: il linguaggio di interrogazione strutturato (SQL) è un linguaggio di query popolare che viene spesso utilizzato in tutti i tipi di applicazioni. Gli analisti di dati e gli sviluppatori imparano e usano SQL perché si integra bene con diversi linguaggi di programmazione ed è anche abbastanza facile da imparare poiché utilizza parole chiave inglesi comuni nelle sue dichiarazioni. Apache Iceberg consente a chiunque abbia familiarità con il linguaggio SQL (Structured Query Language) di creare data lake ed eseguire la maggior parte delle operazioni sui data lake senza dover imparare un nuovo linguaggio.

  • Coerenza dei dati: Apache Iceberg fornisce la coerenza dei dati per garantire che qualsiasi utente che legge e scrive i dati veda gli stessi dati.

  • Struttura dei dati: Apache Iceberg consente di modificare facilmente la struttura dei dati, nota anche come evoluzione dello schema, il che significa che gli utenti possono aggiungere, rinominare o rimuovere colonne da una tabella di dati senza interrompere i dati sottostanti.

  • Controllo delle versioni dei dati: Apache Iceberg fornisce il supporto per il controllo delle versioni dei dati, che consente agli utenti di tenere traccia delle modifiche ai dati nel tempo. Ciò abilita la funzionalità di viaggio nel tempo, che consente agli utenti di accedere e interrogare le versioni storiche dei dati e di analizzare le modifiche ai dati tra aggiornamenti ed eliminazioni.

  • Supporto multipiattaforma: Apache Iceberg supporta una varietà di diversi sistemi di storage e motori di query, tra cui Apache Spark, Apache Hive e Presto. Ciò semplifica l'utilizzo di Iceberg in una varietà di diversi ambienti di elaborazione dati.

  • Elaborazione incrementale: Iceberg supporta l'elaborazione incrementale, che consente agli utenti di elaborare solo i dati modificati dall'ultima esecuzione, nota anche come CDC (Change Data Capture). Ciò può contribuire a migliorare l'efficienza e le prestazioni di elaborazione dei dati.

Quali sono i casi d'uso più comuni per Apache Iceberg?

Apache Iceberg è adatto per molti casi d'uso dei data lake, tra cui:

  • Tabelle di dati nei data lake che richiedono eliminazioni frequenti, ad esempio quando si applicano le leggi sulla privacy dei dati.

  • Tabelle di dati nel data lake che richiedono aggiornamenti a livello di record. Ciò è utile quando il set di dati richiede aggiornamenti frequenti dopo la liquidazione dei dati, ad esempio i dati sulle vendite che possono cambiare a causa di eventi successivi come i resi dei clienti. Iceberg offre funzionalità per aggiornare i singoli record senza dover ripubblicare l'intero set di dati.

  • Tabelle di dati nei data lake che presentano modifiche imprevedibili, come le tabelle SCD (Slowly Changing Dimension). Un esempio di SCD è una tabella dei record dei clienti che include nome, posizione e informazioni di contatto che possono cambiare nel tempo a intervalli sconosciuti.

  • Quando le transazioni con il data lake richiedono validità, durata e affidabilità dei dati garantite, è possibile implementare i formati di tabella Apache Iceberg per garantire le transazioni ACID.

  • Quando è necessario tornare indietro nel tempo per interrogare le versioni storiche dei dati per eseguire analisi delle tendenze, analizzare le modifiche ai dati in un periodo di tempo o ripristinare o ripristinare una versione precedente per correggere problemi.

Chi usa Apache Iceberg?

Ingegneri, amministratori di dati, analisti di dati e data scientist sono tra le persone che utilizzano Apache Iceberg.  Gli ingegneri e gli amministratori dei dati possono utilizzare Apache Iceberg per progettare e creare sistemi di archiviazione di dati scalabili.  Gli analisti e i data scientist possono utilizzare Apache Iceberg per analizzare in modo efficiente set di dati di grandi dimensioni.

Perché scegliere Apache Iceberg?

Apache Iceberg offre un modo rapido ed efficiente per elaborare set di dati di grandi dimensioni su larga scala. Offre i seguenti vantaggi:

  1. Open source: Apache Iceberg è un progetto open source, il che significa che è gratuito e può essere personalizzato per soddisfare le tue esigenze specifiche. Ha anche una comunità attiva di sviluppatori che migliorano continuamente e aggiungono nuove funzionalità al progetto.

  2. Scalabilità: Apache Iceberg è progettato per gestire set di dati di grandi dimensioni in modo efficiente. Può partizionare e organizzare i dati su più nodi, il che aiuta a distribuire il carico di lavoro e ad accelerare l'elaborazione dei dati.

  3. Prestazioni: Apache Iceberg dispone di una serie di funzionalità per ottimizzare le prestazioni delle query, tra cui tecniche di archiviazione e compressione a colonne come il push down dei predicati e l'evoluzione dello schema.

  4. Flessibilità: Apache Iceberg consente di modificare il modo in cui i dati sono organizzati in modo che possano evolversi nel tempo senza dover riscrivere le query o ricostruire le strutture dei dati. Supporta inoltre diversi formati di dati e fonti di dati, il che semplifica l'integrazione con i sistemi esistenti.

  5. Affidabilità: Apache Iceberg garantisce la coerenza e l'affidabilità dei dati attraverso il supporto per le transazioni. Puoi tenere traccia delle modifiche dei dati nel tempo e ripristinare le versioni storiche per aiutarti a correggere i problemi.

Quali servizi AWS supportano Iceberg?

Apache Iceberg supporta i framework di elaborazione dati più diffusi come Apache Spark, Apache Flink, Apache Hive e Presto. I servizi AWS come Amazon Redshift , Amazon Athena, Amazon EMR , AWS Glue e Amazon Data Firehose includono il supporto nativo per framework di data lake transazionali, tra cui Apache Iceberg. Apache Iceberg, in combinazione con i servizi AWS supportati, consente un data lake transazionale, spesso basato sullo storage in S3.

  • Amazon Redshift è un servizio di analisi SQL e data warehousing completamente gestito e basato sull'intelligenza artificiale per guidare il processo decisionale aziendale dei clienti, in modo rapido ed economico. Amazon Redshift offre un'architettura MPP (Massively Parallel Processing), multi-cluster e serverless con funzionalità zero-ETL in grado di realizzare analisi quasi in tempo reale e casi d'uso di IA/ML con la condivisione dei dati. I clienti possono utilizzare Amazon Redshift per interrogare le tabelle Apache Iceberg nel data lake, accessibili tramite il catalogo dati di AWS Glue e unirlo alle loro tabelle nel data warehouse per un'analisi completa.

  • Amazon Athena è un servizio di analisi interattivo e senza server basato su framework open source, che supporta i formati open table e di file. Athena fornisce un modo semplificato e flessibile per analizzare petabyte di dati dove risiede. Athena fornisce supporto nativo per le query di lettura, viaggio nel tempo, scrittura e DDL per le tabelle Apache Iceberg che utilizzano il formato Apache Parquet per i dati e il catalogo AWS Glue per il loro metastore.

  • Amazon EMR è una soluzione di big data per l'elaborazione di dati su scala petabyte, l'analisi interattiva e l'apprendimento automatico che utilizza framework open source come Apache Spark, Hadoop, Presto e Hive. A partire da Amazon EMR 6.5.0, è possibile utilizzare Apache Spark 3 su cluster Amazon EMR con il formato di tabella Iceberg. I framework EMR tra cui Spark, Trino, Flink e Hive supportano Apache Iceberg.

  • AWS Glue è un servizio di integrazione dei dati senza server che semplifica l'individuazione, la preparazione, lo spostamento e l'integrazione di dati provenienti da più fonti per l'analisi, l'apprendimento automatico (ML) e lo sviluppo di applicazioni.  AWS Glue 3.0 e versioni successive supportano il framework Apache Iceberg per data lake. Puoi usare AWS Glue per eseguire operazioni di lettura e scrittura su tabelle Iceberg in Amazon S3 o lavorare con tabelle Iceberg utilizzando il Catalogo dati AWS Glue. Sono supportate anche operazioni aggiuntive tra cui inserimento, aggiornamento e tutte le query Spark e le scritture Spark.

  • Amazon Data Firehose è un servizio serverless completamente gestito per la distribuzione di dati in streaming in tempo reale verso destinazioni come Amazon Simple Storage Service (Amazon S3), Amazon Redshift, Amazon OpenSearch Service, Amazon OpenSearch Serverless, Splunk, Snowflake, Apache Iceberg Tables e qualsiasi endpoint HTTP personalizzato o endpoint HTTP di proprietà di fornitori di servizi di terze parti supportati, tra cui Datadog, Dynatrace, LogicMonitor, MongoDB, New Rehose Lic, Coralogix ed Elastic. Grazie ad Amazon Data Firehose non avrai più bisogno di scrivere applicazioni o gestire risorse. Sarà sufficiente configurare i produttori di dati affinché inviino i dati ad Amazon Data Firehose, che a sua volta li distribuirà automaticamente alla destinazione da te specificata. Puoi anche configurare Amazon Data Firehose per trasformare i tuoi dati prima di distribuirli.