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:

È 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