Obsah

  • Přehled řešení a zjednodušený diagram architektury
  • AWS CDK skript (TypeScript)
  • Konfigurace AWS Glue Crawleru
  • Příklady dotazů Amazon Athena

Přehled řešení

Tento pipeline demonstruje, jak vytvořit bezserverový systém datové analytiky pomocí AWS Glue a Amazon Athena pro dotazování velkých datových sad uložených v Amazon S3. Systém používá AWS Glue k katalogizaci dat a Amazon Athena k spouštění SQL dotazů přímo na data v S3, poskytující škálovatelné a nákladově efektivní řešení pro analýzu dat.

Kombinací AWS Glue, Amazon Athena a Amazon S3 mohou vývojáři vytvořit výkonné bezserverové řešení pro datovou analytiku. Tento přístup ukazuje sílu a flexibilitu AWS služeb při budování škálovatelných, automatizovaných systémů pro dotazování dat.

Popis případu použití

V tomto scénáři jsou velké datové sady uloženy v S3 bucketu. AWS Glue je nakonfigurován k procházení těchto dat, odvození jejich schématu a vytvoření katalogu dostupných datových sad. Jakmile jsou data katalogizována, Amazon Athena může být použita ke spouštění SQL dotazů přímo na data v S3.

AWS Glue Crawler automaticky detekuje schéma dat a aktualizuje AWS Glue Data Catalog. Tento katalog slouží jako perzistentní úložiště metadat, díky čemuž jsou data snadno dostupná pro dotazování pomocí Athena. Athena používá informace z Data Catalogu k tomu, aby věděla, jak číst data z S3.

Uživatelé pak mohou psát SQL dotazy v Atheně, které jsou prováděny přímo na datech v S3 bez nutnosti načítat data do samostatné databáze. Výsledky dotazů jsou uloženy v určeném S3 bucketu pro další analýzu nebo vizualizaci.

Tento automatizovaný analytický pipeline je navržen tak, aby byl škálovatelný, schopný zpracovat velké objemy dat využitím distribuovaných dotazovacích schopností Athena. Eliminuje potřebu správy infrastruktury, protože jak AWS Glue, tak Amazon Athena jsou plně spravované služby.

Průmyslové aplikace

Toto řešení je použitelné v různých průmyslových odvětvích, která se zabývají analýzou velkých objemů dat, včetně financí, zdravotnictví, e-commerce a výroby. Jakákoliv aplikace, která zahrnuje dotazování velkých datových sad pro získání informací, reportování nebo business intelligence, může těžit z tohoto pipeline. Příklady zahrnují finanční analytiku, analýzu výzkumných dat ve zdravotnictví, analýzu chování zákazníků v e-commerce a optimalizaci výrobních procesů.

Zjednodušený diagram architektury

AWS Glue Athena Query Diagram

Architektura se skládá z:

  1. Amazon S3 Buckety: Ukládají surová vstupní data a výsledky dotazů.
  2. AWS Glue Data Catalog: Obsahuje metadata o datových sadách.
  3. AWS Glue Crawler: Odvozuje schéma dat v S3 a naplňuje Data Catalog.
  4. Amazon Athena: Provádí SQL dotazy na data v S3.
  5. IAM Role: Udělují nezbytná oprávnění pro AWS Glue a Athena pro přístup k S3 a dalším AWS službám.

AWS CDK Skript (TypeScript)

import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
import * as s3 from 'aws-cdk-lib/aws-s3';
import * as glue from 'aws-cdk-lib/aws-glue';
import * as iam from 'aws-cdk-lib/aws-iam';
import * as athena from 'aws-cdk-lib/aws-athena';

export class AwsGlueAthenaQueryStack extends cdk.Stack {
  constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    // Vytvoření S3 bucketů pro vstupní data a výsledky dotazů
    const dataBucket = new s3.Bucket(this, 'DataBucket', {
      removalPolicy: cdk.RemovalPolicy.DESTROY,
    });

    const queryResultsBucket = new s3.Bucket(this, 'QueryResultsBucket', {
      removalPolicy: cdk.RemovalPolicy.DESTROY,
    });

    // Vytvoření IAM role pro Glue
    const glueRole = new iam.Role(this, 'GlueRole', {
      assumedBy: new iam.ServicePrincipal('glue.amazonaws.com'),
    });

    glueRole.addManagedPolicy(iam.ManagedPolicy.fromAwsManagedPolicyName('service-role/AWSGlueServiceRole'));
    dataBucket.grantRead(glueRole);

    // Vytvoření Glue databáze
    const glueDatabase = new glue.CfnDatabase(this, 'GlueDatabase', {
      catalogId: this.account,
      databaseInput: {
        name: 'mojedatabaze',
      },
    });

    // Vytvoření Glue Crawleru
    const glueCrawler = new glue.CfnCrawler(this, 'GlueCrawler', {
      role: glueRole.roleArn,
      targets: {
        s3Targets: [{ path: dataBucket.bucketName }],
      },
      databaseName: glueDatabase.ref,
      schedule: {
        scheduleExpression: 'cron(0 1 * * ? *)',
      },
    });

    // Vytvoření Athena workgroup
    new athena.CfnWorkGroup(this, 'AthenaWorkGroup', {
      name: 'MojeAthenaWorkGroup',
      recursiveDeleteOption: true,
      workGroupConfiguration: {
        resultConfiguration: {
          outputLocation: `s3://${queryResultsBucket.bucketName}/athena-vysledky/`,
        },
      },
    });
  }
}

Konfigurace AWS Glue Crawleru

AWS Glue Crawler je nakonfigurován ve výše uvedeném CDK skriptu. Je nastaven tak, aby běžel denně v 1:00 UTC, procházel data v S3 bucketu a aktualizoval Glue Data Catalog. Můžete upravit plán podle potřeb vašeho případu použití.

Příklady dotazů Amazon Athena

Jakmile jsou vaše data katalogizována AWS Glue, můžete začít s jejich dotazováním pomocí Amazon Athena. Zde jsou některé příklady dotazů:

  1. Základní SELECT dotaz:
SELECT *
FROM mojedatabaze.mojatabulka
LIMIT 10;
  1. Agregační dotaz:
SELECT kategorie, COUNT(*) as pocet, AVG(cena) as prumerna_cena
FROM mojedatabaze.produkty
GROUP BY kategorie
ORDER BY pocet DESC;
  1. JOIN dotaz (za předpokladu, že máte více tabulek):
SELECT o.objednavka_id, o.datum_objednavky, z.jmeno_zakaznika, p.nazev_produktu
FROM mojedatabaze.objednavky o
JOIN mojedatabaze.zakaznici z ON o.zakaznik_id = z.zakaznik_id
JOIN mojedatabaze.produkty p ON o.produkt_id = p.produkt_id
WHERE o.datum_objednavky >= DATE '2024-01-01';
  1. Použití vestavěných funkcí Atheny:
SELECT 
    DATE_TRUNC('month', casova_znamka_udalosti) AS mesic,
    COUNT(*) AS pocet_udalosti
FROM mojedatabaze.udalosti
WHERE YEAR(casova_znamka_udalosti) = 2024
GROUP BY DATE_TRUNC('month', casova_znamka_udalosti)
ORDER BY mesic;

Nezapomeňte nahradit mojedatabaze a názvy tabulek vašimi skutečnými názvy databáze a tabulek, jak jsou definovány ve vašem AWS Glue Data Catalogu.

Tento blogový příspěvek poskytuje komplexní návod k nastavení datového analytického pipeline pomocí AWS Glue a Amazon Athena pro dotazování dat uložených v Amazon S3. Zahrnuje přehled řešení, diagram architektury, AWS CDK skript pro nastavení infrastruktury a příklady dotazů Athena. Tento bezserverový přístup umožňuje škálovatelnou a efektivní analýzu dat bez nutnosti spravovat základní infrastrukturu.


Copyright © 2024. All rights reserved.