Databricks maakt streamingverwerking flexibeler schaalbaar
Databricks heeft een functie aangekondigd waarmee gebruikers de verdeling van streamingverwerking kunnen aanpassen met behoud van de opgebouwde verwerkingsstatus. De uitbreiding voor Apache Spark Structured Streaming is beschikbaar als public preview. In een technische blog van vorige week licht de leverancier toe hoe dit het schalen van langlopende datastromen vereenvoudigt.
Bij streaminganalyse moeten berekeningen vaak informatie uit eerdere verwerking onthouden. Denk aan lopende tellingen, het herkennen van dubbele gebeurtenissen of het combineren van binnenkomende datastromen. Deze informatie, de zogeheten state, wordt bewaard zodat een berekening kan doorgaan waar deze gebleven was.
Die verwerkingsstatus is verdeeld over partities. Het aantal partities beïnvloedt hoeveel werk parallel kan worden uitgevoerd en hoeveel informatie elke partitie bevat. Wanneer datavolumes veranderen, kan een eerder gekozen verdeling minder geschikt worden.
Verdeling aanpassen
Tot nu toe lag het aantal partities vast bij het aanmaken van een checkpoint: de opgeslagen informatie waarmee een streamingquery na een onderbreking verder kan. Een aanpassing van de gebruikelijke instelling voor het aantal partities werd bij bestaande checkpoints genegeerd. Voor een andere verdeling moesten gebruikers met een nieuw checkpoint beginnen.
Met on-demand state repartitioning kan Databricks de bestaande verwerkingsstatus opnieuw verdelen. Daardoor kunnen beheerders het aantal partities verhogen of verlagen zonder die status opnieuw op te bouwen.
Dat is volgens de leverancier onder meer bruikbaar wanneer een datastroom groeit of wanneer na het verwerken van historische data minder capaciteit nodig is. Ook kunnen teams verschillende aantallen partities gebruiken om de prestaties van een query af te stemmen op de belasting.
Herstart vereist
De wijziging vraagt wel om een onderbreking. Gebruikers stoppen de query, stellen het gewenste aantal partities in en starten de query opnieuw. Hiervoor is de instelling spark.sql.streaming.stateStore.partitions beschikbaar.
Na de herstart rondt het systeem eerst de laatst geplande verwerkingsbatch af. Vervolgens verdeelt het de opgeslagen status over het nieuwe aantal partities. Pas daarna gaat de reguliere verwerking verder. De duur van deze stap hangt mede af van de hoeveelheid opgeslagen status en is via de voortgangsrapportage te volgen.
Volgens de documentatie vereist de functie Databricks Runtime 18 LTS of hoger en RocksDB voor het opslaan van de verwerkingsstatus. Databricks adviseert wijzigingen te plannen op een moment waarop een tijdelijke verwerkingspauze acceptabel is.
Bron: Databricks




