

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
<a name="emr-hudi-how-it-works"></a>

Quando usi Hudi con Amazon EMR, puoi scrivere dati sul set di dati utilizzando l'API Spark Data Source 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](https://hudi.apache.org/docs/concepts#file-management) 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](https://hudi.apache.org/docs/concepts.html#timeline) nella documentazione di Apache Hudi.

## Informazioni sui tipi di archiviazione del set di dati: copia in scrittura rispetto a unisci in lettura
<a name="emr-hudi-data-files"></a>

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 operazioni da un set di dati CoW per alimentare i processi a valle ed estrarre, trasformare e caricare (ETL) flussi di lavoro.
+ **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](https://hudi.apache.org/docs/concepts.html#storage-types--views) 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
<a name="emr-hudi-hive-metastore"></a>

Quando si registra una tabella Hudi con il metastore Hive, è possibile interrogare le tabelle Hudi utilizzando Hive, Spark SQL o Presto come si farebbe con qualsiasi altra tabella. 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](emr-hudi-work-with-dataset.md). Inoltre, è possibile utilizzare l'utilità della riga di comando hive\$1sync\$1tool per registrare un set di dati Hudi come tabella nel metastore, separatamente. 