Funzionamento di Hudi - Amazon EMR

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Funzionamento di Hudi

Quando usi Hudi con AmazonEMR, puoi scrivere dati sul set di dati utilizzando Spark Data Source API o l'utilità Hudi. DeltaStreamer Hudi organizza un set di dati in una struttura di directory partizionata sotto un basepath che è simile a una tradizionale tabella Hive. Le specifiche di come i dati vengono disposti come file in queste directory dipendono dal tipo di set di dati scelto. È possibile scegliere Copia in scrittura (Cow) o Unisci in lettura (mOr).

Indipendentemente dal tipo di set di dati, ogni partizione in un set di dati è identificata in modo univoco dal partitionpath relativo al basepath. All'interno di ogni partizione, i record vengono distribuiti in più file di dati. Per ulteriori informazioni, consulta Gestione file nella documentazione di Apache Hudi.

Ogni operazione in Hudi ha un commit corrispondente, identificato da un timestamp crescente in maniera monotona noto come Instant. Hudi dispone tutte le operazioni eseguite sul set di dati in serie su una timeline. Hudi si basa sulla timeline per fornire l'isolamento degli snapshot tra lettori e scrittori e per abilitare il rollback a un punto precedente. Per ulteriori informazioni sulle operazioni che Hudi registra e sul relativo stato, consulta Timeline nella documentazione di Apache Hudi.

Informazioni sui tipi di archiviazione del set di dati: copia in scrittura rispetto a unisci in lettura

Quando si crea un set di dati Hudi, si specifica che il set di dati è copiato in scrittura o unito in lettura.

  • Copia in scrittura (CoW): i dati vengono memorizzati in un formato colonnare (Parquet) e ogni aggiornamento crea una nuova versione dei file durante una scrittura. CoW è il tipo di archiviazione predefinito.

  • Unisci in lettura (MoR): i dati vengono memorizzati utilizzando una combinazione di formati colonnare (Parquet) e basati su righe (Avro). Gli aggiornamenti vengono registrati nei file delta basati su righe e vengono compattati in base alle necessità per creare nuove versioni dei file colonnari.

Con i set di dati CoW, ogni volta che c'è un aggiornamento a un record, il file che contiene il record viene riscritto con i valori aggiornati. Quando si lavora con un set di dati MoR, ogniqualvolta è disponibile un aggiornamento Hudi scrive solo la riga per il registro modificato. MoR è più adatto per carichi di lavoro pesanti in scrittura o modifiche con meno letture. CoW è più adatto per carichi di lavoro pesanti di lettura su dati che cambiano meno frequentemente.

Hudi fornisce tre viste logiche per l'accesso ai dati:

  • Visualizzazione ottimizzata in lettura: fornisce l'ultimo set di dati con commit delle tabelle CoW e l'ultimo set di dati compattati dalle tabelle MoR.

  • Visualizzazione incrementale: fornisce un flusso di modifiche tra due azioni da un set di dati CoW per alimentare i lavori a valle e i flussi di lavoro di estrazione, trasformazione, caricamento ()ETL.

  • Visualizzazione in tempo reale: fornisce i dati di commit più recenti da una tabella MoR unendo i file colonnari e basati su righe in linea.

Quando si esegue una query sulla visualizzazione ottimizzata di lettura, la query restituisce tutti i dati compattati ma non include i commit delta più recenti. Eseguire una query di questi dati offre buone prestazioni di lettura, ma omette i dati più aggiornati. Quando si esegue una query sulla visualizzazione in tempo reale, Hudi unisce i dati compattati con i commit delta in lettura. I dati più aggiornati sono disponibili per eseguire query, ma il sovraccarico di calcolo dell'unione rende la query meno performante. La possibilità di eseguire una query dei dati compattati o dati in tempo reale consente di scegliere tra prestazioni e flessibilità quando si esegue una query.

Per ulteriori informazioni sui compromessi tra i tipi di archiviazione, consulta Tipi di archiviazione e visualizzazioni nella documentazione di Apache Hudi.

Hudi crea due tabelle nel metastore Hive per MoR: una tabella con il nome specificato, che è una vista ottimizzata per la lettura e una tabella con lo stesso nome aggiunto con _rt, che è una vista in tempo reale. È possibile eseguire una query a entrambe le tabelle.

Registrazione di un set di dati Hudi con il metastore

Quando registri una tabella Hudi con il metastore Hive, puoi interrogare le tabelle Hudi usando Hive, Spark o Presto come faresti con qualsiasi altra tabella. SQL Inoltre, puoi integrare Hudi con AWS Glue configurando Hive e Spark per utilizzare il AWS Glue Data Catalog come metastore. Per le tabelle MoR, Hudi registra il set di dati come due tabelle nel Metastore: una tabella con il nome specificato, che è una vista ottimizzata per la lettura e una tabella con lo stesso nome aggiunto con _rt, che è una vista in tempo reale.

Viene registrata una tabella Hudi con il metastore Hive quando si utilizza Spark per creare un set di dati Hudi impostando l'opzione HIVE_SYNC_ENABLED_OPT_KEY su "true" e fornendo altre proprietà richieste. Per ulteriori informazioni, consulta Lavorare con un set di dati Hudi. Inoltre, è possibile utilizzare l'utilità della riga di comando hive_sync_tool per registrare un set di dati Hudi come tabella nel metastore, separatamente.