Zephyrnet-logo

Verbeter de queryprestaties met behulp van AWS Glue Data Catalog-statistieken op kolomniveau | Amazon-webservices

Datum:

Vandaag stellen we een nieuwe mogelijkheid beschikbaar van AWS lijm Gegevenscatalogus waarmee statistieken op kolomniveau kunnen worden gegenereerd voor AWS Glue-tabellen. Deze statistieken zijn nu geïntegreerd met de kostengebaseerde optimizers (CBO) van Amazone Athene en Amazon Roodverschuivingsspectrum, wat resulteert in verbeterde queryprestaties en potentiële kostenbesparingen.

Datameren zijn ontworpen voor het tegen lage kosten opslaan van grote hoeveelheden ruwe, ongestructureerde of semi-gestructureerde gegevens, en organisaties delen deze datasets met meerdere afdelingen en teams. De query's op deze grote datasets lezen enorme hoeveelheden gegevens en kunnen complexe samenvoegingsbewerkingen uitvoeren op meerdere datasets. Tijdens gesprekken met onze klanten hebben we geleerd dat een van de uitdagende aspecten van de prestaties van data lakes is hoe deze analysequery's kunnen worden geoptimaliseerd om ze sneller uit te voeren.

De optimalisatie van de data lake-prestaties is vooral belangrijk voor zoekopdrachten met meerdere joins en dat is waar op kosten gebaseerde optimizers het meest helpen. Om CBO te laten werken, moeten kolomstatistieken worden verzameld en bijgewerkt op basis van wijzigingen in de gegevens. We lanceren de mogelijkheid om statistieken op kolomniveau te genereren, zoals het aantal afzonderlijke waarden, het aantal nulwaarden, max en min voor bestanden zoals Parquet, ORC, JSON, Amazon ION, CSV en XML op AWS Glue-tabellen. Met deze lancering beschikken klanten nu over een geïntegreerde end-to-end-ervaring waarbij statistieken over Glue-tabellen worden verzameld en opgeslagen in de AWS Glue Catalog, en beschikbaar worden gesteld aan analysediensten voor verbeterde queryplanning en -uitvoering.

Met behulp van deze statistieken verbeteren op kosten gebaseerde optimalisatieprogramma's de planning voor het uitvoeren van query's en verbeteren ze de prestaties van query's die worden uitgevoerd in Amazon Athena en Amazon Redshift Spectrum. CBO kan bijvoorbeeld kolomstatistieken gebruiken, zoals het aantal afzonderlijke waarden en het aantal nulwaarden, om de rijvoorspelling te verbeteren. Rijvoorspelling is het aantal rijen uit een tabel dat bij een bepaalde stap tijdens de queryplanningsfase wordt geretourneerd. Hoe nauwkeuriger de rijvoorspellingen zijn, des te efficiënter zijn de stappen voor het uitvoeren van query's. Dit leidt tot een snellere uitvoering van query's en mogelijk lagere kosten. Enkele van de specifieke optimalisaties die CBO kan toepassen, zijn onder meer het opnieuw ordenen van joins en het omlaag duwen van aggregaties op basis van de statistieken die beschikbaar zijn voor elke tabel en kolom.

Voor klanten die gebruik maken van gegevensgaas Met AWS Lake-formatie permissies worden tabellen van verschillende dataproducenten gecatalogiseerd in de gecentraliseerde governance-accounts. Terwijl ze statistieken genereren over tabellen in de gecentraliseerde catalogus en deze tabellen delen met consumenten, zullen query's op die tabellen in consumentenaccounts automatisch prestatieverbeteringen zien. In dit bericht demonstreren we de mogelijkheid van AWS Glue Data Catalog om kolomstatistieken voor onze voorbeeldtabellen te genereren.

Overzicht oplossingen

Om de effectiviteit van deze mogelijkheid aan te tonen, gebruiken we de industriestandaard TPC-DS 3 TB-dataset opgeslagen in een Amazon Simple Storage Service (Amazon S3) openbare emmer. We vergelijken de queryprestaties voor en na het genereren van kolomstatistieken voor de tabellen, door query's uit te voeren in Amazon Athena en Amazon Redshift Spectrum. We bieden zoekopdrachten aan die we in dit bericht hebben gebruikt en we moedigen u aan om uw eigen zoekopdrachten uit te proberen volgens de workflow, zoals geïllustreerd in de volgende details.

De workflow bestaat uit de volgende stappen op hoog niveau:

  1. Catalogiseren van de Amazon S3 Bucket: Gebruik AWS Glue Crawler om de aangewezen Amazon S3-bucket te crawlen, metadata te extraheren en deze naadloos op te slaan in de AWS Glue-gegevenscatalogus. We zullen deze tabellen bevragen met behulp van Amazon Athena en Amazon Redshift Spectrum.
  2. Kolomstatistieken genereren: Maak gebruik van de verbeterde mogelijkheden van AWS Glue Data Catalog om uitgebreide kolomstatistieken voor de gecrawlde gegevens te genereren, waardoor waardevolle inzichten in de dataset worden geboden.
  3. Query's uitvoeren met Amazon Athena en Amazon Redshift Spectrum: Evalueer de impact van kolomstatistieken op de prestaties van query's door Amazon Athena en Amazon Redshift Spectrum te gebruiken om query's op de dataset uit te voeren.

Het volgende diagram illustreert de oplossingsarchitectuur.

walkthrough

Om de oplossing te implementeren, doorlopen we de volgende stappen:

  1. Resources instellen met AWS CloudFormatie.
  2. Voer AWS Glue Crawler uit op de openbare Amazon S3-bucket om de TPC-DS-dataset van 3 TB weer te geven.
  3. Voer zoekopdrachten uit op Amazon Athena en Amazon Redshift en noteer de duur van de zoekopdracht
  4. Genereer statistieken voor AWS Glue Data Catalog-tabellen
  5. Voer query's uit op Amazon Athena en Amazon Redshift en vergelijk de queryduur met de vorige run
  6. Optioneel: Plan AWS Glue-kolomstatistiekentaken met AWS Lambda en de Amazon EventBridge Scheduler

Resources instellen met AWS CloudFormation

Dit bericht bevat een AWS CloudFormatie sjabloon voor een snelle installatie. U kunt het bekijken en aanpassen aan uw behoeften. De sjabloon genereert de volgende bronnen:

  • Een virtuele privécloud van Amazon (Amazon VPC), openbaar subnet, privé-subnetten en routetabellen.
  • Een Amazon Redshift serverloze werkgroep en naamruimte.
  • Een AWS Glue-crawler om de openbare Amazon S3-bucket te crawlen en een tabel te maken voor de Glue Data Catalog voor TPC-DS-dataset
  • AWS Glue-catalogusdatabases en -tabellen
  • Een Amazon S3-emmer om het Athena-resultaat op te slaan.
  • AWS Identiteits- en toegangsbeheer (AWS IAM) gebruikers en beleid.
  • AWS Lambda en Amazon Event Bridge-planner om de AWS Glue Column-statistieken te plannen

Voer de volgende stappen uit om de AWS CloudFormation-stack te starten:

Note: De AWS Glue-gegevenscatalogustabellen worden gegenereerd met behulp van de openbare bucket s3://blogpost-sparkoneks-us-east-1/blog/BLOG_TPCDS-TEST-3T-partitioned/, gehost in het us-east-1 regio. Als u van plan bent deze AWS CloudFormation-sjabloon in een andere regio te implementeren, is het noodzakelijk om de gegevens naar de overeenkomstige regio te kopiëren of de gegevens binnen uw geïmplementeerde regio te delen, zodat deze toegankelijk zijn vanuit Amazon Redshift.

  1. Meld u aan bij de AWS-beheerconsole als AWS Identiteits- en Toegangsbeheer (AWS IAM) beheerder.
  2. Kies Launch Stack om een ​​AWS CloudFormation-sjabloon te implementeren.
  3. Kies Volgende.
  4. Op de volgende pagina behoudt u alle opties als standaard of brengt u de nodige wijzigingen aan op basis van uw vereiste keuze Volgende.
  5. Bekijk de details op de laatste pagina en selecteer Ik erken dat AWS CloudFormation IAM-bronnen kan creëren.
  6. Kies creëren.

Het voltooien van deze stapel kan ongeveer 10 minuten duren, waarna u de geïmplementeerde stapel kunt bekijken op de AWS CloudFormation-console.

Voer de AWS Glue Crawlers uit die zijn gemaakt door de AWS CloudFormation-stack

Voer de volgende stappen uit om uw crawlers uit te voeren:

  1. Op de AWS Glue-console om AWS-lijmconsole, kiest u Crawlers onder Gegevenscatalogus in het navigatiedeelvenster.
  2. Zoek en voer twee crawlers uit tpcdsdb-without-stats en tpcdsdb-with-stats. Het kan enkele minuten duren om dit te voltooien.

Zodra de crawler succesvol is voltooid, worden er twee identieke databases gemaakt tpcdsdbnostats en tpcdsdbwithstats. De tafels binnen tpcdsdbnostats zal geen statistieken hebben en we zullen ze als referentie gebruiken. Wij genereren statistieken over tabellen in tpcdsdbwithstats. Controleer of u over deze twee databases en onderliggende tabellen van de AWS Glue Console beschikt. De tpcdsdbnostats-database ziet er als volgt uit. Op dit moment worden er geen statistieken over deze tabellen gegenereerd.

Voer de opgegeven query uit met Amazon Athena op tabellen zonder statistieken

Om uw zoekopdracht in Amazon Athena uit te voeren op tabellen zonder statistieken, voert u de volgende stappen uit:

  1. Download de athena-query's van hier.
  2. Op de Amazone Athena-console, kiest u de opgegeven query één voor één voor tabellen in de database tpcdsdbnostats.
  3. Voer de query uit en noteer de Looptijd voor elke vraag.

Voer de opgegeven query uit met behulp van Amazon Redshift Spectrum op tabellen zonder statistieken

Voer de volgende stappen uit om uw zoekopdracht in Amazon Redshift uit te voeren:

  1. Download de Amazon Redshift-query's van hier.
  2. Op de Redshift-query-editor v2, voer het Redshift Query voor tabellen zonder statistieken sectie uit de gedownloade query.
  3. Voer de query uit en noteer de query-uitvoering van elke query.

Genereer statistieken over AWS Glue Catalog-tabellen

Voer de volgende stappen uit om statistieken over AWS Glue Catalog-tabellen te genereren:

  1. Navigeer naar de AWS-lijmconsole en kies de onderstaande databases Gegevenscatalogus.
  2. Klik op tpcdsdbwithstats database en het zal alle beschikbare tabellen weergeven.
  3. Selecteer een van deze tabellen (bijv. call_center).
  4. Ga naar Kolomstatistieken – nieuw tab en kies Genereer statistieken.
  5. Behoud de standaardoptie. Onder Kies kolommen houden Tabel (alle kolommen) en onder Opties voor rijbemonstering Houden Alle rijen, Onder IAM rol kiezen AWSGluestats-blog en selecteer Genereer statistieken.

U kunt de status van de uitvoering van het genereren van statistieken zien, zoals weergegeven in de volgende afbeelding:

Nadat u statistieken over AWS Glue Catalog-tabellen heeft gegenereerd, zou u gedetailleerde kolomstatistieken voor die tabel moeten kunnen zien:

Herhaal stap 2 tot en met 5 om statistieken te genereren voor alle benodigde tabellen, zoals catalog_sales, catalog_returns, warehouse, item, date_dim, store_sales, customer, customer_address, web_sales, time_dim, ship_mode, web_site, web_returns. Als alternatief kunt u de “Plan AWS Glue Statistics-runs' aan het einde van deze blog om statistieken voor alle tabellen te genereren. Als u klaar bent, beoordeelt u de queryprestaties voor elke query.

Voer de opgegeven query uit met behulp van Athena Console op statistiekentabellen

  1. Op de Amazone Athena-console, voer het Athena Query voor tabellen met statistieken sectie uit de gedownloade query.
  2. Voer de query-uitvoering van elke query uit en noteer deze.

In onze voorbeelduitvoering van de query's op de tabellen hebben we de uitvoeringstijd van de query waargenomen volgens de onderstaande tabel. We zagen een duidelijke verbetering in de queryprestaties, variërend van 13 tot 55%.

Verbetering van de tijd voor het opvragen van Athena

TPC-DS 3T-query's zonder lijmstatistieken (sec) met lijmstatistieken (sec) prestatieverbetering (%)
Vraag 2 33.62 15.17 55%
Vraag 4 132.11 72.94 45%
Vraag 14 134.77 91.48 32%
Vraag 28 55.99 39.36 30%
Vraag 38 29.32 25.58 13%

Voer de opgegeven query uit met Amazon Redshift Spectrum op statistische tabellen

  1. Op de Amazone Redshift-query-editor v2, voer het Redshift Query voor tabellen met statistieken sectie uit de gedownloade query.
  2. Voer de query uit en noteer de query-uitvoering van elke query.

In onze voorbeelduitvoering van de query's op de tabellen hebben we de uitvoeringstijd van de query waargenomen volgens de onderstaande tabel. We zagen een duidelijke verbetering in de queryprestaties, variërend van 13 tot 89%.

Tijdverbetering van Amazon Redshift Spectrum-query's

TPC-DS 3T-query's zonder lijmstatistieken (sec) met lijmstatistieken (sec) prestatieverbetering (%)
Vraag 40 124.156 13.12 89%
Vraag 60 29.52 16.97 42%
Vraag 66 18.914 16.39 13%
Vraag 95 308.806 200 35%
Vraag 99 20.064 16 20%

Plan AWS Glue-statistieken Runs

In dit segment van het bericht begeleiden we u bij de stappen voor het plannen van AWS Glue-kolomstatistieken met behulp van AWS Lambda en Amazon EventBridge Planner. Om dit proces te stroomlijnen, zijn een AWS Lambda-functie en een Amazon EventBridge-planner gemaakt als onderdeel van de CloudFormation-stackimplementatie.

  1. AWS Lambda-functie-instelling:

Om te beginnen gebruiken we een AWS Lambda-functie om de uitvoering van de AWS Glue-kolomstatistiekentaak te activeren. De AWS Lambda-functie roept de start_column_statistics_task_run API via de boto3-bibliotheek (AWS SDK voor Python). Dit vormt de basis voor het automatiseren van de update van kolomstatistieken.

Laten we de AWS Lambda-functie verkennen:

    • Ga naar uw AWS Lijm Lambda-console.
    • kies Functies en zoek de GlueTableStatisticsFunctionv1.
    • Voor een beter begrip van de AWS Lambda-functie raden we aan de code in de Code sectie en het onderzoeken van de omgevingsvariabelen hieronder Configuratie.
  1. Configuratie van de Amazon EventBridge-planner

De volgende stap omvat het plannen van de aanroep van de AWS Lambda-functie met behulp van Amazon EventBridge-planner. De planner is geconfigureerd om de AWS Lambda-functie dagelijks op een specifiek tijdstip te activeren – in dit geval 08:00 uur. Dit zorgt ervoor dat de AWS Glue-kolomstatistiekentaak regelmatig en voorspelbaar wordt uitgevoerd.

Laten we nu eens kijken hoe u de planning kunt bijwerken:

Schoonmaken

Verwijder de AWS-bronnen om ongewenste afschrijvingen op uw AWS-account te voorkomen:

  1. Meld u aan bij de AWS CloudFormation-console als de AWS IAM-beheerder die is gebruikt voor het maken van de AWS CloudFormation-stack.
  2. Verwijder de AWS CloudFormation-stack die u hebt gemaakt.

Conclusie

In dit bericht hebben we u laten zien hoe u dit kunt gebruiken AWS-lijmgegevenscatalogus om statistieken op kolomniveau te genereren AWS lijm tafels. Deze statistieken zijn nu geïntegreerd met de op kosten gebaseerde optimizer van Amazone Athene en Amazon Roodverschuivingsspectrum, wat resulteert in verbeterde queryprestaties en potentiële kostenbesparingen. Verwijzen naar Documenten voor ondersteuning voor Glue Catalog Statistics voor verschillende analytische services van AWS.

Als u vragen of suggesties heeft, kunt u deze indienen in het opmerkingengedeelte.


Over de auteurs

Sandeep Adwankar is Senior Technisch Product Manager bij AWS. Hij is gevestigd in de California Bay Area en werkt samen met klanten over de hele wereld om zakelijke en technische vereisten om te zetten in producten waarmee klanten de manier waarop ze gegevens beheren, beveiligen en openen, kunnen verbeteren.

Navnit Shukla fungeert als AWS Specialist Solution Architect met een focus op Analytics. Hij beschikt over een groot enthousiasme om klanten te helpen bij het ontdekken van waardevolle inzichten uit hun data. Door zijn expertise bouwt hij innovatieve oplossingen die bedrijven in staat stellen tot weloverwogen, datagestuurde keuzes te komen. Navnit Shukla is met name de ervaren auteur van het boek Data Wrangling on AWS. Hij is te bereiken via LinkedIn.

spot_img

Laatste intelligentie

spot_img