Delen via


Inzicht in verschillen tussen U-SQL- en Spark-gegevensindelingen

Belangrijk

Azure Data Lake Analytics is op 29 februari 2024 buiten gebruik gesteld. Kom meer te weten over via deze aankondiging.

Voor gegevensanalyse kan uw organisatie gebruikmaken van Azure Synapse Analytics- of Microsoft Fabric-.

Als u Azure Databricks- of Azure HDInsight Spark-wilt gebruiken, raden we u aan om uw gegevens te migreren van Azure Data Lake Storage Gen1- naar Azure Data Lake Storage Gen2-.

Naast het verplaatsen van uw bestanden, wilt u ook uw gegevens, opgeslagen in U-SQL-tabellen, toegankelijk maken voor Spark.

Gegevens verplaatsen die zijn opgeslagen in Azure Data Lake Storage Gen1-bestanden

Gegevens die zijn opgeslagen in bestanden kunnen op verschillende manieren worden verplaatst:

Wij raden u aan om het artikel Uw big data-analyticsoplossingen upgraden van Azure Data Lake Storage Gen1 naar Azure Data Lake Storage Gen2 te bekijken.

Gegevens verplaatsen die zijn opgeslagen in U-SQL-tabellen

U-SQL-tabellen worden niet begrepen door Spark. Als u gegevens hebt opgeslagen in U-SQL-tabellen, voert u een U-SQL-taak uit waarmee de tabelgegevens worden geëxtraheerd en opgeslagen in een indeling die Spark begrijpt. De meest geschikte indeling is het maken van een set Parquet-bestanden volgens de mapindeling van de Hive-metastore.

De uitvoer kan worden bereikt in U-SQL met de ingebouwde Parquet-uitvoer en door gebruik te maken van de dynamische uitvoerpartitionering met bestandsverzamelingen om de partitiemappen te creëren. Verwerk meer bestanden dan ooit en gebruik Parquet. biedt een voorbeeld van hoe dergelijke door Spark verbruikbare gegevens gemaakt kunnen worden.

Na deze transformatie kopieert u de gegevens zoals beschreven in het hoofdstuk Gegevens verplaatsen die zijn opgeslagen in Azure Data Lake Storage Gen1-bestanden.

Waarschuwingen

  • Gegevenssemantiek bij het kopiëren van bestanden, vindt de kopie plaats op byteniveau. Dezelfde gegevens moeten dus worden weergegeven in het Azure Data Lake Storage Gen2-account. Houd er echter rekening mee dat Spark bepaalde tekens anders kan interpreteren. Er kan bijvoorbeeld een andere standaardwaarde worden gebruikt voor een rijscheidingsteken in een CSV-bestand. Als u getypte gegevens kopieert (uit tabellen), hebben Parquet en Spark mogelijk verschillende precisie en schaal voor sommige getypte waarden (bijvoorbeeld een float) en kunnen null-waarden verschillend worden behandeld. U-SQL heeft bijvoorbeeld de C#-semantiek voor null-waarden, terwijl Spark een logica met drie waarden heeft voor null-waarden.

  • U-SQL-tabellen voor gegevensorganisatie (partitionering) bieden partitionering op twee niveaus. Het buitenste niveau (PARTITIONED BY) is op waarde en wordt meestal toegewezen aan het Hive/Spark-partitioneringsschema met behulp van maphiërarchieën. U moet ervoor zorgen dat de null-waarden zijn toegewezen aan de juiste map. Het binnenste niveau (DISTRIBUTED BY) in U-SQL biedt vier distributieschema's: round robin, bereik, hash en directe hash. Hive-/Spark-tabellen ondersteunen alleen partitionering van waarden of hashpartitionering, met behulp van een andere hash-functie dan U-SQL. Wanneer u uw U-SQL-tabelgegevens uitvoert, kunt u waarschijnlijk alleen passen in de waardepartitionering voor Spark. Mogelijk moet u de gegevenslay-out verder optimaliseren, afhankelijk van uw definitieve Spark-query's.

Volgende stappen