Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel worden de algemene semantiek voor aggregatie geïntroduceerd en worden de verschillen besproken tussen resultaten die worden berekend met behulp van batchquery's, gerealiseerde weergaven en streaming.
Batchaggregaties
Batchaggregatie is het standaardgedrag dat wordt waargenomen bij het uitvoeren van een ad-hocquery in SQL of het verwerken van gegevens met Apache Spark DataFrames.
Een statistische query die is geschreven op basis van een tabel of gegevensbron, berekent de statistische statistieken voor alle records in de gegevensbron. Azure Databricks maakt waar mogelijk gebruik van optimalisaties en metagegevens om deze query's te optimaliseren en kan veel aggregaties op een efficiënte manier berekenen voor grote gegevenssets.
Latentie en rekenkosten voor batchaggregatie kunnen toenemen naarmate de gegevensgrootte toeneemt, en vooraf berekende vaak geraadpleegde geaggregeerde waarden kunnen gebruikers aanzienlijke tijd en geld besparen. Databricks raadt aan om gerealiseerde weergaven te gebruiken om cumulatieve waarden incrementeel bij te werken. Zie Incrementele aggregaten.
Stateful aggregaties
Aggregaten die zijn gedefinieerd in streaming workloads, zijn stateful. Stateful aggregaten houden waargenomen records in de loop van de tijd bij en herberekenen resultaten wanneer nieuwe gegevens worden verwerkt.
U moet watermerken gebruiken bij het berekenen van stateful aggregaties. Als u een watermerk weglaat van een toestandsvolle aggregatie-query, leidt dit ertoe dat de statusinformatie in de loop van de tijd oneindig blijft toenemen. Dit zorgt voor vertragingen in de verwerking en kan leiden tot out-of-memory fouten.
U moet geen toestandafhankelijke aggregaatfunctie gebruiken om statistieken te berekenen over een hele dataset. Databricks raadt aan om gerealiseerde weergaven te gebruiken voor incrementele berekening van statistische gegevens in een volledige gegevensset. Zie Incrementele aggregaten.
Voor het configureren van workloads die stateful aggregaten efficiënt en correct berekenen, moet u begrijpen hoe gegevens worden ontvangen van bronsystemen en hoe Azure Databricks watermerken, uitvoermodi en triggerintervallen gebruikt om de querystatus en resultatenberekening te beheersen.
Incrementele aggregaties
U kunt gerealiseerde weergaven gebruiken om veel cumulatieve waarden incrementeel te berekenen. Materiële weergaven houden wijzigingen in de gegevensbron automatisch bij en passen de juiste updates toe op de geaggregeerde waarden wanneer ze vernieuwd worden. De resultaten die worden geretourneerd door een gematerialiseerde weergave, zijn gelijk aan de resultaten die worden geretourneerd door het opnieuw berekenen van geaggregeerde resultaten op basis van brongegevens met een batchtaak of ad-hocquery.
Aggregaties bij benadering
Hoewel Azure Databricks excelleert bij het berekenen van zeer grote gegevenssets, kan het gebruik van benadering voor aggregaties de verwerking van query's versnellen en de kosten verlagen wanneer u geen nauwkeurige resultaten nodig hebt.
Het gebruik van LIMIT instructies is soms goed genoeg voor het ophalen van een snelle momentopname van gegevens, maar introduceert geen willekeurigheid of garandeert dat steekproeven worden gedistribueerd over de gegevensset.
Spark SQL heeft de volgende systeemeigen methoden voor het benaderen van aggregaties voor numerieke of categorische gegevens:
-
approx_count_distinctstatistische functie -
approx_percentilestatistische functie -
approx_top_kstatistische functie
U kunt ook een steekproefpercentage opgeven om TABLESAMPLE een willekeurige steekproef te genereren op basis van een gegevensset en bij benadering aggregaties te berekenen. Zie TABLESAMPLE clausule.
Gegevenssets controleren met behulp van statistische statistieken
Gegevensprofilering maakt gebruik van statistische statistieken en gegevensdistributies om de gegevenskwaliteit in de loop van de tijd bij te houden. U kunt rapporten genereren om trends te visualiseren en waarschuwingen te plannen om onverwachte wijzigingen in gegevens te markeren. Zie Gegevensprofilering.