Share via


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

Belangrijk

Azure Data Lake Analytics op 29 februari 2024 buiten gebruik gesteld. Meer informatie over 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 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, die zijn 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:

We raden u aan het artikel Uw big data analytics-oplossingen upgraden van Azure Data Lake Storage Gen1 naar Azure Data Lake Storage Gen2

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 om een set Parquet-bestanden te maken volgens de mapindeling van de Hive-metastore.

De uitvoer kan worden bereikt in U-SQL met de ingebouwde Parquet-uitvoerter en met behulp van de dynamische uitvoerpartitionering met bestandssets om de partitiemappen te maken. Meer bestanden verwerken dan ooit en Parquet gebruiken biedt een voorbeeld van hoe u dergelijke spark-verbruiksbare gegevens kunt maken.

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 sommige tekens anders kan interpreteren. Het kan bijvoorbeeld een andere standaardwaarde gebruiken 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 van de getypte waarden (bijvoorbeeld een float) en worden null-waarden mogelijk verschillend behandeld. U-SQL heeft bijvoorbeeld de C#-semantiek voor null-waarden, terwijl Spark een logica met drie waarden voor null-waarden heeft.

  • U-SQL-tabellen voor gegevensorganisatie (partitionering) bieden partitionering op twee niveaus. Het buitenste niveau (PARTITIONED BY) is op waarde en wordt voornamelijk toegewezen aan het Hive-/Spark-partitieschema 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 toewijzen aan de waardepartitionering voor Spark en moet u mogelijk uw gegevensindeling verder afstemmen, afhankelijk van uw laatste Spark-query's.

Volgende stappen