Comprendere le differenze tra i formati di dati U-SQL e Spark
Importante
Azure Data Lake Analytics ritirato il 29 febbraio 2024. Altre informazioni con questo annuncio.
Per l'analisi dei dati, l'organizzazione può usare Azure Synapse Analytics o Microsoft Fabric.
Se si vuole usare Azure Databricks o Azure HDInsight Spark, è consigliabile eseguire la migrazione dei dati da Azure Data Lake Storage Gen1 a Azure Data Lake Storage Gen2.
Oltre a spostare i file, si vuole anche rendere i dati, archiviati nelle tabelle U-SQL, accessibili a Spark.
Spostare i dati archiviati nei file di Azure Data Lake Storage Gen1
I dati archiviati nei file possono essere spostati in vari modi:
- Scrivere una pipeline di Azure Data Factory per copiare i dati dall'account Azure Data Lake Storage Gen1 all'account Azure Data Lake Storage Gen2.
- Scrivere un processo Spark che legge i dati dall'account Azure Data Lake Storage Gen1 e lo scrive nell'account Azure Data Lake Storage Gen2. In base al caso d'uso, potrebbe essere necessario scriverlo in un formato diverso, ad esempio Parquet se non è necessario mantenere il formato di file originale.
È consigliabile esaminare l'articolo Aggiornare le soluzioni di analisi Big Data da Azure Data Lake Storage Gen1 a Azure Data Lake Storage Gen2
Spostare i dati archiviati nelle tabelle U-SQL
Le tabelle U-SQL non sono comprese da Spark. Se sono presenti dati archiviati nelle tabelle U-SQL, si eseguirà un processo U-SQL che estrae i dati della tabella e lo salva in un formato compreso da Spark. Il formato più appropriato consiste nel creare un set di file Parquet seguendo il layout della cartella del metastore Hive.
L'output può essere ottenuto in U-SQL con l'output parquet predefinito e usando il partizionamento di output dinamico con set di file per creare le cartelle di partizione. Elaborare più file che mai e usare Parquet offre un esempio di come creare tali dati di consumo Spark.
Dopo questa trasformazione, copiare i dati come descritto nel capitolo Spostare i dati archiviati nei file di Azure Data Lake Storage Gen1.
Precisazioni
Semantica dei dati Durante la copia dei file, la copia verrà eseguita a livello di byte. Pertanto, gli stessi dati devono essere visualizzati nell'account Azure Data Lake Storage Gen2. Si noti tuttavia che Spark può interpretare alcuni caratteri in modo diverso. Ad esempio, può usare un valore predefinito diverso per un delimitatore di righe in un file CSV. Inoltre, se si copiano dati tipizzati (da tabelle), Parquet e Spark possono avere precisione e scalabilità diverse per alcuni dei valori tipizzati (ad esempio, un float) e possono trattare valori Null in modo diverso. Ad esempio, U-SQL ha la semantica C# per i valori Null, mentre Spark ha una logica a tre valori per i valori Null.
Le tabelle U-SQL dell'organizzazione dei dati (partizionamento) forniscono due partizionamento a livello. Il livello esterno (
PARTITIONED BY
) è per valore e esegue il mapping principalmente nello schema di partizionamento Hive/Spark usando gerarchie di cartelle. È necessario assicurarsi che i valori Null vengano mappati alla cartella corretta. Il livello interno (DISTRIBUTED BY
) in U-SQL offre quattro schemi di distribuzione: round robin, intervallo, hash e hash diretto. Le tabelle Hive/Spark supportano solo il partizionamento dei valori o il partizionamento hash, usando una funzione hash diversa rispetto a U-SQL. Quando si eseguono i dati della tabella U-SQL, probabilmente sarà possibile eseguire il mapping solo nel partizionamento dei valori per Spark e potrebbe essere necessario eseguire ulteriori ottimizzazioni del layout dei dati a seconda delle query Spark finali.
Passaggi successivi
- Informazioni sui concetti di codice Spark per gli sviluppatori U-SQL
- Aggiornare le soluzioni di analisi dei Big Data da Azure Data Lake Storage Gen1 ad Azure Data Lake Storage Gen2
- .NET per Apache Spark
- Trasformare dati tramite l'attività Spark in Azure Data Factory
- Trasformare i dati usando l'attività Hive di Hadoop in Azure Data Factory
- Informazioni su Apache Spark in Azure HDInsight