Condividi tramite


Informazioni sulle differenze tra i formati di dati U-SQL e Spark

Importante

Azure Data Lake Analytics è stato ritirato il 29 febbraio 2024. Scopri di più su 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, è anche necessario 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 diversi modi:

È consigliabile esaminare l'articolo Aggiornare le soluzioni di analisi dei Big Data da Azure Data Lake Storage Gen1 ad Azure Data Lake Storage Gen2

Spostare i dati archiviati nelle tabelle U-SQL

Le tabelle U-SQL non sono comprese da Spark. Se i dati sono archiviati nelle tabelle U-SQL, si eseguirà un processo U-SQL che estrae i dati della tabella e lo salva in un formato comprensibile 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'emettitore Parquet predefinito e usando il partizionamento dinamico degli output con insiemi di file per creare le cartelle delle partizioni. Elaborare più file che mai e usare Parquet fornisce un esempio di come creare tali dati consumabili da Spark.

Dopo questa trasformazione, copiare i dati come descritto nel capitolo Spostare i dati archiviati nei file di Azure Data Lake Storage Gen1.

Avvertenze

  • Semantica dei dati Durante la copia dei file, la copia verrà eseguita a livello di byte. Gli stessi dati dovrebbero quindi apparire 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 riga in un file CSV. Inoltre, se si copiano dati tipizzati (da tabelle), Parquet e Spark possono avere precisione e scala diversi per alcuni dei valori tipizzati (ad esempio, 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 null.

  • Le tabelle U-SQL per l'organizzazione dei dati (partizionamento) forniscono due livelli di partizionamento. Il livello esterno (PARTITIONED BY) è basato sul valore e si mappa per lo più nello schema di partizionamento di Hive/Spark utilizzando 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 esportano i dati della tabella U-SQL, probabilmente sarà possibile eseguire il mapping solo nel partizionamento dei valori di Spark e potrebbe essere necessario eseguire un'ulteriore ottimizzazione del layout dei dati in base alle query finali di Spark.

Passaggi successivi