Delen via


Uw bestaande Apache Spark-code aanpassen voor Azure Databricks

In dit artikel vindt u een overzicht van de vereiste wijzigingen om bestaande Apache Spark-workloads aan te passen die moeten worden uitgevoerd in Azure Databricks. Of u nu overstapt naar Azure Databricks vanuit een on-premises cluster, aangepaste cloudinfrastructuur of een andere Apache Spark-aanbieding voor ondernemingen, de meeste workloads vereisen slechts enkele wijzigingen om in productie te komen. Azure Databricks breidt, vereenvoudigt en verbetert de prestaties van Apache Spark door aangepaste optimalisaties te introduceren, infrastructuur te configureren en te implementeren en afhankelijkheden in Databricks Runtime te onderhouden.

Belangrijk

Wanneer u versies van Apache Spark bijwerken, zijn er mogelijk belangrijke wijzigingen in de syntaxis. Zie de releaseopmerkingen van Databricks Runtime en de versies en compatibiliteit en de Spark-migratiehandleiding.

Wijzigen parquet in delta

Databricks raadt het gebruik van Delta Lake aan in plaats van Parquet of ORC bij het schrijven van gegevens. Azure Databricks heeft veel functies geoptimaliseerd voor efficiëntie bij interactie met tabellen die worden ondersteund door Delta Lake, en het upgraden van gegevens en codeformulieren van Parquet naar Delta Lake kost slechts enkele stappen. Zie Een Parquet-data lake migreren naar Delta Lake.

Omdat Delta Lake ACID-transactiegaranties biedt, kunt u workloads mogelijk vereenvoudigen om tijdelijke oplossingen te verwijderen die zijn gericht op het maken van pseudo-transactionaliteit in Apache Spark-bewerkingen. Voorbeelden zijn:

  • Het bouwen van een mapstructuur of partitioneringsstrategie waarmee alle bestanden van een bepaalde bewerking gelijktijdig kunnen worden gedetecteerd als onderdeel van een partitie.
  • Configureren of vertrouwen op de metastore om transactionaliteit toe te voegen voor hoe nieuwe gegevens worden gedetecteerd.
  • Hiermee MSCK repair registreert u bestanden die naar een tabel naar de metastore zijn geschreven.
  • Partities alter table add partition handmatig toevoegen aan een tabel.

Zie Wanneer tabellen te partitioneren in Azure Databricks.

Notitie

U kunt workloads uitvoeren zonder de gebruikte gegevensindelingen te upgraden, maar veel van de grootste prestatieverbeteringen in Azure Databricks zijn rechtstreeks gekoppeld aan Delta Lake.

Apache Spark-code opnieuw compileren met databricks Runtime-compatibele bibliotheken

Elke versie van Databricks Runtime is vooraf geconfigureerd met veel van de bibliotheken die vereist zijn in Apache Spark-toepassingen. U kunt zo nodig extra bibliotheken op uw rekenproces installeren, maar waar mogelijk raadt Databricks aan om bibliotheekversies te gebruiken die zijn verpakt in de Databricks Runtime die zijn getest op compatibiliteit. Elke Databricks Runtime-release bevat een lijst met alle geïnstalleerde bibliotheken. Zie de releaseversies en compatibiliteit van Databricks Runtime.

Opdrachten voor het maken van SparkSession verwijderen

Veel verouderde Apache Spark-workloads declareren expliciet een nieuwe SparkSession voor elke taak. Azure Databricks maakt automatisch een SparkContext voor elk rekencluster en maakt een geïsoleerde SparkSession voor elke notebook of taak die op het cluster wordt uitgevoerd. U kunt de mogelijkheid behouden om code lokaal te compileren en te testen en vervolgens te implementeren in Azure Databricks door deze opdrachten te upgraden om te gebruiken SparkSession.builder().getOrCreate().

Terminalscriptopdrachten verwijderen

Apache Spark vereist dat programma's expliciet declareren dat ze zijn voltooid met behulp van opdrachten zoals sys.exit() of sc.stop(). Azure Databricks beëindigt taken automatisch en schoont ze op zodra ze zijn voltooid, zodat deze opdrachten niet nodig zijn en moeten worden verwijderd.

Azure Databricks beëindigt en schoont gestructureerde streaming-workloads ook automatisch op bij beëindiging van uitvoering, zodat u opdrachten uit Structured Streaming-toepassingen kunt verwijderen en vergelijkbare opdrachten kunt verwijderen awaitTermination() .

Azure Databricks vertrouwen om uw cluster te configureren

Azure Databricks configureert alle instellingen voor het stuurprogramma en uitvoerders in uw rekencluster automatisch om de tolerantie en het resourcegebruik te maximaliseren. Het leveren van aangepaste configuraties voor de uitvoerders of JVM kan leiden tot verminderde prestaties. Databricks raadt u aan alleen Spark-configuraties in te stellen die nodig zijn voor het beheren van typeafhandeling of functies, zodat logica consistent blijft.

Uw workloads uitvoeren

Nu u patronen, opdrachten en instellingen hebt verwijderd die de uitvoering van Azure Databricks kunnen verstoren, kunt u uw workloads uitvoeren in een testomgeving en prestaties en resultaten vergelijken met uw verouderde infrastructuur. Hoewel veel van de vaardigheden die uw team mogelijk heeft ontwikkeld om problemen op te lossen en de prestaties voor Apache Spark-workloads te verbeteren, nog steeds kunnen worden gebruikt in Azure Databricks, kunt u vaker meer voordelen zien van het upgraden van stappen om nieuwe functies te gebruiken in Apache Spark-, Delta Lake- of aangepaste Azure Databricks-producten.