Egyszerűsítse és gyorsítsa fel az Apache Spark alkalmazásokat az Amazon Redshift adatokon az Apache Spark Amazon Redshift integrációjával

Egyszerűsítse és gyorsítsa fel az Apache Spark alkalmazásokat az Amazon Redshift adatokon az Apache Spark Amazon Redshift integrációjával

Forrás csomópont: 2597866

Az ügyfelek használják Amazon RedShift hogy üzleti szempontból kritikus elemzéseiket petabájtnyi strukturált és félig strukturált adatokon futtassák. Az Apache Spark egy népszerű keretrendszer, amellyel olyan alkalmazásokat hozhat létre, mint például az ETL (kibontás, átalakítás és betöltés), interaktív elemzés és gépi tanulás (ML). Az Apache Spark lehetővé teszi alkalmazások létrehozását számos nyelven, például Java, Scala és Python, az Amazon Redshift adattárházában lévő adatok elérésével.

Az Apache Spark Amazon Redshift integrációja segít a fejlesztőknek zökkenőmentesen létrehozni és futtatni az Apache Spark alkalmazásokat az Amazon Redshift adatain. A fejlesztők használhatják az AWS elemzési és ML szolgáltatásokat, mint pl Amazon EMR, AWS ragasztóés Amazon SageMaker hogy könnyedén készítsenek Apache Spark alkalmazásokat, amelyek olvasnak az Amazon Redshift adattárházukból, és írnak oda. Ezt anélkül teheti meg, hogy veszélyeztetné alkalmazásai teljesítményét vagy adatainak tranzakciós konzisztenciáját.

Ebben a bejegyzésben megvitatjuk, hogy az Apache Spark Amazon Redshift integrációja miért kritikus és hatékony az analitika és az ML számára. Ezenkívül megvitatjuk azokat a használati eseteket, amelyek az Amazon Redshift és az Apache Spark integrációját használják az üzleti hatások fokozása érdekében. Végül lépésről lépésre bemutatjuk, hogyan használhatja ezt a hivatalos AWS-csatlakozót egy Apache Spark alkalmazásban.

Amazon Redshift integráció az Apache Sparkhoz

Az Amazon Redshift integrációja az Apache Sparkhoz minimalizálja a nehézkes és gyakran manuális folyamatot a Spark-redshift csatlakozó beállításához (közösségi verzió) és lerövidíti az elemzési és ML feladatokra való felkészüléshez szükséges időt. Csak meg kell adnia a kapcsolatot az adattárházával, és perceken belül elkezdheti az Amazon Redshift adataival való munkát Apache Spark alapú alkalmazásaiból.

Számos lenyomási funkciót használhat olyan műveletekhez, mint a rendezés, aggregálás, a korlátozás, az összekapcsolás és a skaláris függvények, így csak a releváns adatok kerülnek át az Amazon Redshift adattárházból a fogyasztó Apache Spark alkalmazásba. Ez lehetővé teszi az alkalmazások teljesítményének javítását. Az Amazon Redshift rendszergazdái könnyen azonosíthatják a Spark-alapú alkalmazásokból generált SQL-t. Ebben a bejegyzésben megmutatjuk, hogyan tudhatja meg az Apache Spark job által generált SQL-t.

Ezenkívül az Apache Spark Amazon Redshift integrációja Parquet fájlformátumot használ, amikor az adatokat ideiglenes könyvtárba helyezi. Az Amazon Redshift az UNLOAD SQL utasítást használja ezen ideiglenes adatok tárolására Amazon egyszerű tárolási szolgáltatás (Amazon S3). Az Apache Spark alkalmazás lekéri az eredményeket az ideiglenes (Parquet fájlformátumban tárolt) könyvtárból, ami javítja a teljesítményt.

Segítségével biztonságosabbá teheti alkalmazásait AWS Identity and Access Management (IAM) hitelesítő adatok az Amazon Redshifthez való csatlakozáshoz.

Az Apache Spark Amazon Redshift integrációja a spark-redshift csatlakozó tetejére épül (közösségi verzió), és fokozza a teljesítményt és a biztonságot, így akár 10-szer gyorsabb alkalmazásteljesítményt érhet el.

Használati esetek az Amazon Redshift és az Apache Spark integrációjához

A mi felhasználási esetünkben a termékalapú vállalat vezetése tudni akarja az egyes termékek eladásait több piacon. Mivel a vállalat eladásai dinamikusan ingadoznak, kihívást jelent a vezetés számára, hogy nyomon kövesse az eladásokat több piacon. Az összesített eladások azonban csökkennek, és a vállalat vezetése szeretné kideríteni, mely piacok nem teljesítenek, hogy megcélozhassák ezeket a piacokat promóciós kampányokkal.

Több piacon történő értékesítés esetén a termékértékesítési adatok, például a rendelések, a tranzakciók és a szállítási adatok elérhetők az Amazon S3-on a Data Lake-ben. Az adatmérnöki csapat az Apache Sparkot az Amazon EMR-rel vagy az AWS Glue-val használhatja az adatok elemzéséhez az Amazon S3-ban.

A készletadatok az Amazon Redshiftben érhetők el. Hasonlóképpen, az adatmérnöki csapat elemezheti ezeket az adatokat az Apache Spark segítségével az Amazon EMR vagy egy AWS Glue-feladat segítségével, az Apache Spark Amazon Redshift integrációjával aggregációk és átalakítások végrehajtására. Az összesített és átalakított adatkészlet visszatárolható az Amazon Redshiftbe az Apache Spark Amazon Redshift integrációjával.

Az olyan elosztott keretrendszer, mint az Apache Spark és az Apache Spark Amazon Redshift integrációja, áttekintést biztosíthat az adattóban és az adattárházban, így értékesítési betekintést nyerhet. Ezek a betekintések elérhetővé tehetők az üzleti érdekelt felek és az Amazon Redshift üzleti felhasználói köre számára, hogy megalapozott döntéseket hozzanak az alacsony bevételű piaci szegmensek célzott promócióinak futtatása érdekében.

Ezenkívül az Amazon Redshift integrációját az Apache Sparkkal a következő használati esetekben használhatjuk:

  • Egy Apache Spark-feladatokat futtató Amazon EMR- vagy AWS Glue-ügyfél az adatokat szeretné átalakítani, és az Amazon Redshiftbe írni az ETL-folyamat részeként.
  • Egy ML-ügyfél az Apache Spark és a SageMaker szolgáltatást használja az Amazon Redshiftben található adatok elérésére és átalakítására.
  • Az Amazon EMR-, AWS Glue- vagy SageMaker-ügyfelei az Apache Sparkot használják interaktív adatelemzéshez az Amazon Redshiftre vonatkozó notebookok adataival.

Példák az Apache Spark Amazon Redshift integrációjára egy Apache Spark alkalmazásban

Ebben a bejegyzésben bemutatjuk az Amazon Redshift és az Amazon EMR kapcsolatának lépéseit Amazon rugalmas számítási felhő (Amazon EC2), Amazon EMR szerver nélküliés az AWS ragasztót egy közös szkript használatával. A következő mintakódban készítünk egy jelentést, amely a 2008-as év negyedéves eladásait mutatja. Ehhez Apache Spark DataFrame segítségével összekapcsolunk két Amazon Redshift táblát, lefuttatjuk a predikátum lenyomását, összesítjük és rendezzük az adatokat, majd felírjuk a transzformált vissza az Amazon Redshifthez. A szkript PySparkot használ

A script használ IAM-alapú hitelesítés az Amazon Redshift számára. Az Amazon EMR és az AWS Glue által használt IAM-szerepeknek rendelkezniük kell a megfelelő engedélyekkel az Amazon Redshift hitelesítéséhez, és hozzá kell férniük egy S3 tárolóhoz az ideiglenes adattároláshoz.

A következő példa házirend lehetővé teszi, hogy az IAM szerepkör meghívja a GetClusterCredentials tevékenységek:

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "redshift:GetClusterCredentials", "Resource": "arn:aws:redshift:<aws_region_name>:xxxxxxxxxxxx:dbuser:*/temp_*" }
}

A következő példa házirend lehetővé teszi a hozzáférést egy S3 tárolóhoz ideiglenes adattárolás céljából:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket" ], "Resource": "arn:aws:s3:::<s3_bucket_name>" } ]
}

A teljes szkript a következő:

from pyspark.sql import SparkSession
from pyspark.sql.functions import col # Initiate Apache Spark session
spark = SparkSession .builder .appName("SparkRedshiftConnector") .enableHiveSupport() .getOrCreate() # Set connection options for Amazon Redshift
jdbc_iam_url = "jdbc:redshift:iam://redshift-spark-connector-1.xxxxxxxxxxx.<aws_region_name>.redshift.amazonaws.com:5439/sample_data_dev"
temp_dir = 's3://<s3_bucket_name>/redshift-temp-dir/'
aws_role = 'arn:aws:iam::xxxxxxxxxxxx:role/redshift-s3' # Set query group for the query. More details on Amazon Redshift WLM https://docs.aws.amazon.com/redshift/latest/dg/cm-c-executing-queries.html
queryGroup = "emr-redshift"
jdbc_iam_url_withQueryGroup = jdbc_iam_url+'?queryGroup='+queryGroup # Set User name for the query
userName = 'awsuser'
jdbc_iam_url_withUserName = jdbc_iam_url_withQueryGroup+';user='+userName # Define the Amazon Redshift context
redshiftOptions = { "url": jdbc_iam_url_withUserName, "tempdir": temp_dir, "aws_iam_role" : aws_role
} # Create the sales DataFrame from Amazon Redshift table using io.github.spark_redshift_community.spark.redshift class
sales_df = ( spark.read .format("io.github.spark_redshift_community.spark.redshift") .options(**redshiftOptions) .option("dbtable", "tickit.sales") .load()
) # Create the date Data Frame from Amazon Redshift table
date_df = ( spark.read .format("io.github.spark_redshift_community.spark.redshift") .options(**redshiftOptions) .option("dbtable", "tickit.date") .load()
) # Assign a Data Frame to the above output which will be written back to Amazon Redshift
output_df= sales_df.join(date_df, sales_df.dateid == date_df.dateid, 'inner').where( col("year") == 2008).groupBy("qtr").sum("qtysold").select( col("qtr"), col("sum(qtysold)")).sort(["qtr"], ascending=[1]).withColumnRenamed("sum(qtysold)","total_quantity_sold") # Display the output
output_df.show() ## Lets drop the queryGroup for easy validation of push down queries
# Set User name for the query
userName = 'awsuser'
jdbc_iam_url_withUserName = jdbc_iam_url+'?user='+userName # Define the Amazon Redshift context
redshiftWriteOptions = { "url": jdbc_iam_url_withUserName, "tempdir": temp_dir, "aws_iam_role" : aws_role
} # Write the Data Frame back to Amazon Redshift
output_df.write .format("io.github.spark_redshift_community.spark.redshift") .mode("overwrite") .options(**redshiftWriteOptions) .option("dbtable", "tickit.test") .save()

Ha az előző szkriptet tervezi használni a környezetében, győződjön meg róla, hogy a következő változók értékeit lecseréli a környezetének megfelelő értékekkel: jdbc_iam_url, temp_dirés aws_role.

A következő részben végigvezetjük a szkript futtatásának lépéseit, hogy összesítsünk egy mintaadatkészletet, amely elérhető az Amazon Redshiftben.

Előfeltételek

Mielőtt elkezdené, győződjön meg arról, hogy a következő előfeltételek teljesülnek:

Telepítsen erőforrásokat az AWS CloudFormation használatával

Hajtsa végre a következő lépéseket a CloudFormation verem üzembe helyezéséhez:

  1. Jelentkezzen be a AWS felügyeleti konzol, majd indítsa el a CloudFormation veremet:
    BDB-2063-launch-cloudformation-stack

Ön is töltse le a CloudFormation sablont az ebben a bejegyzésben említett erőforrások létrehozásához az infrastruktúrán keresztül kódként (IaC). Használja ezt a sablont egy új CloudFormation-verem indításakor.

  1. A kiválasztáshoz görgessen le az oldal aljára Tudomásul veszem, hogy az AWS CloudFormation IAM-erőforrásokat hozhat létre alatt Képességek, majd válassza ki Verem létrehozása.

A verem létrehozása 15-20 percet vesz igénybe. A CloudFormation sablon a következő erőforrásokat hozza létre:

    • Amazon VPC a szükséges alhálózatokkal, útvonaltáblázatokkal és NAT-átjáróval
    • Egy S3 vödör a névvel redshift-spark-databucket-xxxxxxx (vegye figyelembe, hogy az xxxxxxx egy véletlenszerű karakterlánc, amely egyedivé teszi a vödör nevét)
    • Amazon Redshift-fürt az adatbázisba betöltött mintaadatokkal dev és az elsődleges felhasználó redshiftmasteruser. Ennek a blogbejegyzésnek a céljából redshiftmasteruser adminisztrátori engedéllyel használják. Mindazonáltal ajánlatos olyan felhasználót használni, aki finomszemcsés hozzáférés-vezérléssel rendelkezik éles környezetben.
    • Az Amazon Redshifthez használható IAM-szerep, amely ideiglenes hitelesítő adatokat kérhet az Amazon Redshift-fürt fejlesztői adatbázisából
    • Amazon EMR Studio a szükséges IAM-szerepekkel
    • Az Amazon EMR 6.9.0-s verziója egy EC2-fürtön, a szükséges IAM-szerepekkel
    • Az Amazon EMR Serverless alkalmazás 6.9.0-s verziója
    • AWS Glue csatlakozás és AWS Glue feladat 4.0-s verziója
    • A Jupyter jegyzetfüzet futtatni az Amazon EMR Studio használatával az Amazon EMR használatával egy EC2 fürtön
    • Az Amazon EMR Studio és az Amazon EMR Serverless használatával futtatható PySpark-szkript
  1. A verem létrehozása után válassza ki a verem nevét redshift-spark és keresse meg a Kimenetek

Ezeket a kimeneti értékeket később ebben a bejegyzésben használjuk.

A következő szakaszokban bemutatjuk az Amazon Redshift integráció lépéseit az Apache Spark-hoz az Amazon EMR-től az Amazon EC2-n, az Amazon EMR Serverless-en és az AWS Glue-n.

Használja az Amazon Redshift integrációját az Apache Sparkkal az Amazon EMR-en az EC2-n

Az Amazon EMR 6.9.0 és újabb verzióitól kezdve az Amazon Redshift integrációját használó csatlakozó az Apache Sparkhoz és az Amazon Redshift JDBC illesztőprogramhoz helyileg elérhető az Amazon EMR-en. Ezek a fájlok a /usr/share/aws/redshift/ Könyvtár. Az Amazon EMR korábbi verzióiban azonban a közösség változata a spark-redshift csatlakozó áll rendelkezésre.

A következő példa bemutatja, hogyan csatlakoztassa az Amazon Redshiftet PySpark kernel segítségével egy Amazon EMR Studio jegyzetfüzet. A CloudFormation verem létrehozta az Amazon EMR Studio-t, az Amazon EMR-t egy EC2-fürtön, valamint a futtatható Jupyter notebookot. A példa végighaladásához hajtsa végre a következő lépéseket:

  1. Töltse le az S3 tárolóban elérhető Jupyter notebookot:
    • A CloudFormation veremkimenetekben keresse meg a következő értékét EMRStudioNotebook, amelynek a redshift-spark-emr.ipynb notebook az S3 kosárban kapható.
    • Válassza ki a hivatkozást, vagy nyissa meg a hivatkozást egy új lapon a jegyzetfüzet URL-címének másolásával.
    • A hivatkozás megnyitása után töltse le a jegyzetfüzetet a kiválasztással Letöltés, amely helyileg menti a fájlt a számítógépére.
  1. Az Amazon EMR Studio eléréséhez válassza ki vagy másolja a kulcshoz tartozó CloudFormation veremkimenetekben található hivatkozást EMRStudioURL.
  2. A navigációs panelen válassza a lehetőséget munkaterületek.
  3. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Munkaterület létrehozása.
  4. Adjon meg például egy nevet a munkaterületnek redshift-spark.
  5. Bontsa ki a Speciális konfiguráció szakasz és válassza ki Csatlakoztassa a munkaterületet egy EMR-fürthöz.
  6. Alatt Csatlakozás egy EMR-fürthöz, válassza ki a névvel rendelkező EMR-klasztert emrCluster-Redshift-Spark.
  7. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Munkaterület létrehozása.
  8. Az Amazon EMR Studio munkaterület létrehozása után Csatolt állapotban a munkaterület nevének kiválasztásával érheti el a munkaterületet.

Ennek meg kell nyitnia a munkaterületet egy új lapon. Vegye figyelembe, hogy ha rendelkezik előugró ablakok blokkolójával, előfordulhat, hogy engedélyeznie kell a munkaterületnek az előugró ablakok blokkolójának megnyitását vagy letiltását.

Az Amazon EMR Studio Workspace-be most feltöltjük a korábban letöltött Jupyter notebookot.

  1. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Feltöltés a helyi fájlrendszer böngészéséhez és a Jupyter notebook feltöltéséhez (redshift-spark-emr.ipynb).
  2. Válassza ki (kattintson duplán) a redshift-spark-emr.ipynb jegyzetfüzetet a Munkaterületen belül a jegyzetfüzet megnyitásához.

A notebook az általa elvégzett különféle feladatok részleteit tartalmazza. Vegye figyelembe, hogy a szakaszban Határozza meg az Amazon Redshift fürthöz való csatlakozáshoz szükséges változókat, nem kell frissítenie az értékeket jdbc_iam_url, temp_dirés aws_role mert ezeket az AWS CloudFormation frissíti Önnek. Az AWS CloudFormation is végrehajtotta a Előfeltételek részben a jegyzetfüzetben.

Most már elindíthatja a notebook futtatását.

  1. Futtassa az egyes cellákat kijelölésükkel, majd kiválasztással játszani.

Használhatja a billentyűkombinációt is Shift + Enter or Shift+Return. Alternatív megoldásként kiválaszthatja az összes cellát Futtassa az összes cellát a futás menüben.

  1. Keresse meg az Amazon Redshift fürtön az Apache Spark Amazon Redshift integrációja által végrehajtott predikátum lenyomási műveletet.

Az Amazon S3-on tárolt ideiglenes adatokat optimalizált Parquet formátumban is láthatjuk. A kimenet látható a szakasz cellájának futtatásából Az utolsó lekérdezés végrehajtása az Amazon Redshiftben.

  1. Az Amazon EMR feladat által létrehozott táblázat érvényesítéséhez az Amazon EC2 rendszeren, lépjen az Amazon Redshift konzolra, és válassza ki a fürtöt redshift-spark-redshift-cluster a Kiépített fürtök irányítópultja cimre.
  2. A fürt részleteinél a Adatok lekérdezése menüben válasszon Lekérdezés a lekérdezésszerkesztőben v2.
  3. Válassza ki a fürtöt a navigációs panelen, és csatlakozzon az Amazon Redshift fürthöz, amikor az hitelesítést kér.
  4. választ Ideiglenes igazolványok.
  5. A adatbázis, belép dev.
  6. A felhasználónév, belép redshiftmasteruser.
  7. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Megtakarítás.
  8. A navigációs panelen bontsa ki a fürtöt redshift-spark-redshift-cluster, bővítse ki a fejlesztői adatbázist, bővítse ki tickit, és bővítse ki Asztalok a sémán belüli összes tábla listázásához tickit.

Meg kell találnod az asztalt test_emr.

  1. Válassza ki (jobb gombbal) a táblázatot test_emr, majd válassza ki Táblázat kiválasztása lekérdezni a táblázatot.
  2. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a futás az SQL utasítás futtatásához.

Használja az Amazon Redshift integrációját az Apache Sparkkal az Amazon EMR Serverless rendszeren

Az Amazon EMR 6.9.0-s és újabb verziója biztosítja az Amazon Redshift integrációt az Apache Spark JAR-okhoz (az Amazon Redshift által kezelt) és az Amazon Redshift JDBC JAR-okhoz helyileg az Amazon EMR Serverless rendszeren is. Ezek a fájlok a /usr/share/aws/redshift/ Könyvtár. A következő példában az általunk korábban létrehozott CloudFormation verem által az S3 tárolóban elérhető Python-szkriptet használjuk.

  1. A CloudFormation veremkimenetekben jegyezze fel a for értékét EMRServerlessExecutionScript, amely a Python szkript helye az S3 tárolóban.
  2. Jegyezze fel a for értékét is EMRServerlessJobExecutionRole, amely az Amazon EMR Serverless feladat futtatásához használandó IAM szerepkör.
  3. Az Amazon EMR Studio eléréséhez válassza ki vagy másolja a kulcshoz tartozó CloudFormation veremkimenetekben található hivatkozást EMRStudioURL.
  4. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Alkalmazási területek alatt vagy szerver a navigációs ablaktáblában.

Talál egy EMR-alkalmazást, amelyet a CloudFormation verem hozott létre a névvel emr-spark-redshift.

  1. Az állás elküldéséhez válassza ki a pályázat nevét.
  2. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Állás beküldése.
  3. Alatt Munka részletei, A Név, adjon meg egy azonosítható nevet a munkának.
  4. A Futóidejű szerepkör, válassza ki azt az IAM-szerepet, amelyet korábban megjegyzett a CloudFormation verem kimenetéből.
  5. A Szkript helye, adja meg a Python-szkript elérési útját, amelyet korábban megjegyzett a CloudFormation verem kimenetéből.
  6. Bontsa ki a részt Szikra tulajdonságai és válassza a Szerkesztés szövegben
  7. Írja be a következő értéket a szövegmezőbe, amely megadja az elérési utat redshift-connector, Amazon Redshift JDBC illesztőprogram, spark-avro JAR, és minimal-json JAR fájlok:
    --jars /usr/share/aws/redshift/jdbc/RedshiftJDBC.jar,/usr/share/aws/redshift/spark-redshift/lib/spark-redshift.jar,/usr/share/aws/redshift/spark-redshift/lib/spark-avro.jar,/usr/share/aws/redshift/spark-redshift/lib/minimal-json.jar

  8. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Állás beküldése.
  9. Várja meg, amíg a feladat befejeződik, és a futás állapota mint jelenik meg Siker.
  10. Keresse meg az Amazon Redshift lekérdezésszerkesztőt, és nézze meg, hogy a táblázat sikeresen létrejött-e.
  11. Ellenőrizze az Amazon Redshift lekérdezési csoporthoz futtatott lekérdezéseket emr-serverless-redshift. A következő SQL utasítást futtathatja az adatbázisban dev:
    SELECT query_text FROM SYS_QUERY_HISTORY WHERE query_label = 'emr-serverless-redshift' ORDER BY start_time DESC LIMIT 1

Láthatja, hogy a pushdown lekérdezés és a visszatérési eredmények Parquet fájlformátumban vannak tárolva az Amazon S3-on.

Használja az Amazon Redshift integrációját az Apache Sparkkal az AWS Glue-on

Az AWS Glue 4.0-s és újabb verzióitól kezdve az Amazon Redshifthez csatlakozó Apache Spark jobok használhatják az Amazon Redshift integrációját az Apache Sparkhoz és az Amazon Redshift JDBC illesztőprogramhoz. Azok a meglévő AWS Glue-feladatok, amelyek már az Amazon Redshiftet használják forrásként vagy célként, frissíthetők AWS Glue 4.0-ra, hogy kihasználják ezt az új csatlakozót. A bejegyzéshez mellékelt CloudFormation sablon a következő AWS Glue erőforrásokat hozza létre:

  • AWS ragasztócsatlakozás az Amazon Redshifthez – Az AWS Glue és az Amazon Redshift közötti kapcsolat létrehozásához az Apache Spark Amazon Redshift integrációjával
  • Az AWS ragasztófeladathoz kapcsolódó IAM-szerep – Az IAM szerepkör az AWS ragasztófeladat futtatásához szükséges engedélyek kezeléséhez
  • AWS ragasztó munka – Az AWS Glue feladat szkriptje, amely átalakításokat és aggregációkat hajt végre az Amazon Redshift integrációjával az Apache Sparkhoz

A következő példa a PySpark AWS ragasztófeladatához csatolt AWS Glue kapcsolatot használja, és a következő lépéseket tartalmazza:

  1. Az AWS Glue konzolon válassza a lehetőséget kapcsolatok a navigációs ablaktáblában.
  2. Alatt kapcsolatok, válassza ki a CloudFormation sablon által létrehozott AWS Glue kapcsolatot az Amazon Redshift számára.
  3. Ellenőrizze a kapcsolat részleteit.

Mostantól újra felhasználhatja ezt a kapcsolatot egy munkán belül vagy több munkán belül.

  1. A Csatlakozók oldalon válassza ki az alatta lévő CloudFormation verem által létrehozott AWS ragasztófeladatot A munkáid, vagy elérheti az AWS ragasztófeladatot a kulcshoz megadott URL-cím használatával GlueJob a CloudFormation verem kimenetében.
  2. Az AWS ragasztófeladat szkriptjének elérése és ellenőrzése.
  3. A Munka részletei lapon, győződjön meg róla Ragasztós változat be van állítva 4.0. ragasztó.

Ez biztosítja, hogy a munka a legújabbat használja redshift-spark csatlakozó.

  1. Bontsa Speciális tulajdonságok és a kapcsolatok szakaszban ellenőrizze, hogy a CloudFormation verem által létrehozott kapcsolat csatolva van-e.
  2. Ellenőrizze az AWS ragasztófeladathoz hozzáadott feladatparamétereket. Ezek az értékek a CloudFormation-verem kimenetében is elérhetők.
  3. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Megtakarítás és azután futás.

A futtatott feladat állapotát megtekintheti a futás Tab.

  1. A feladat futtatása sikeres befejezése után ellenőrizheti az AWS ragasztófeladat által létrehozott táblázatteszt-ragasztó kimenetét.
  2. Ellenőrizzük az Amazon Redshift lekérdezési csoporthoz futtatott push-down lekérdezéseket glue-redshift. A következő SQL utasítást futtathatja az adatbázisban dev:
    SELECT query_text FROM SYS_QUERY_HISTORY WHERE query_label = 'glue-redshift' ORDER BY start_time DESC LIMIT 1

Legjobb gyakorlatok

Tartsa szem előtt a következő bevált gyakorlatokat:

  • Fontolja meg az Amazon EMR Apache Spark Amazon Redshift integrációját ahelyett, hogy a redshift-spark csatlakozó (közösségi verzió) az új Apache Spark-feladatokhoz.
  • Ha meglévő Apache Spark-feladatai vannak a redshift-spark csatlakozó (közösségi verzió), fontolja meg azok frissítését, hogy az Amazon Redshift integrációját használják az Apache Sparkhoz
  • Az Apache Spark Amazon Redshift integrációja automatikusan alkalmaz predikátumot és lekérdezést a teljesítmény optimalizálása érdekében. Javasoljuk a támogatott funkciók használatát (autopushdown) a lekérdezésben. Az Apache Spark Amazon Redshift integrációja SQL lekérdezéssé alakítja a függvényt, és futtatja a lekérdezést az Amazon Redshiftben. Ez az optimalizálás a szükséges adatok lekérését eredményezi, így az Apache Spark kevesebb adatot tud feldolgozni, és jobb teljesítményt nyújt.
    • Fontolja meg az összesített pushdown függvények használatát, mint pl avg, count, max, minés sum szűrt adatok lekéréséhez adatfeldolgozáshoz.
    • Fontolja meg a logikai lenyomási operátorok használatát, mint pl in, isnull, isnotnull, contains, endswithés startswith szűrt adatok lekéréséhez adatfeldolgozáshoz.
    • Fontolja meg a logikai pushdown operátorok használatát, mint pl and, orés not (Vagy !) szűrt adatok lekéréséhez adatfeldolgozáshoz.
  • Javasoljuk, hogy egy IAM-szerepet adjon át a paraméter használatával aws_iam_role az Amazon Redshift hitelesítéshez az Apache Spark alkalmazásból az Amazon EMR-en vagy az AWS Glue-on. Az IAM-szerepkörnek rendelkeznie kell a szükséges engedélyekkel az ideiglenes IAM-hitelesítő adatok lekéréséhez az Amazon Redshift-hez való hitelesítéshez, amint az e blog „Példák Amazon Redshift integrációjára az Apache Spark számára Apache Spark alkalmazásban” című szakaszában látható.
  • Ezzel a funkcióval nem kell fenntartania Amazon Redshift felhasználónevét és jelszavát a titokkezelőben és az Amazon Redshift adatbázisban.
  • Az Amazon Redshift az UNLOAD SQL utasítást használja az ideiglenes adatok tárolására az Amazon S3-on. Az Apache Spark alkalmazás lekéri az eredményeket az ideiglenes (Parquet fájlformátumban tárolt) könyvtárból. Ez az ideiglenes könyvtár az Amazon S3-on nem törlődik automatikusan, ezért további költségekkel járhat. Javasoljuk a használatát Amazon S3 életciklus irányelvei az S3 vödör megőrzési szabályainak meghatározásához.
  • Ajánlott bekapcsolni Amazon Redshift audit naplózás a kapcsolatokra és a felhasználói tevékenységekre vonatkozó információk naplózásához az adatbázisban.
  • Ajánlott bekapcsolni Amazon Redshift nyugalmi titkosítás hogy titkosítsa az adatait, ahogy az Amazon Redshift beírja azokat az adatközpontjaiba, és visszafejtse azokat, amikor hozzáfér.
  • Javasoljuk, hogy frissítsen az AWS Glue 4.0-s vagy újabb verziójára az Amazon Redshift integrációjának használatához az Apache Sparkhoz, amely már a dobozból is elérhető. Az AWS Glue ezen verziójára való frissítés automatikusan kihasználja ezt a funkciót.
  • Javasoljuk, hogy frissítsen az Amazon EMR v6.9.0 vagy újabb verziójára az Amazon Redshift integráció használatához az Apache Sparkhoz. Nem kell kifejezetten kezelnie az illesztőprogramokat vagy a JAR fájlokat.
  • Fontolja meg az Amazon EMR Studio notebookok használatát az Amazon Redshift adataival való interakcióhoz az Apache Spark alkalmazásban.
  • Fontolja meg az AWS Glue Studio használatát Apache Spark-feladatok létrehozásához vizuális felület segítségével. Arra is válthat, hogy Apache Spark kódot írjon a Scalában vagy a PySparkban az AWS Glue Studio-ban.

Tisztítsuk meg

Hajtsa végre a következő lépéseket a CloudFormation-sablon részeként létrehozott erőforrások megtisztításához, hogy megbizonyosodjon arról, hogy nem kell számláznia az erőforrásokért, ha már nem használja őket:

  1. Állítsa le az Amazon EMR Serverless alkalmazást:
    • Az Amazon EMR Studio eléréséhez válassza ki vagy másolja a kulcshoz tartozó CloudFormation veremkimenetekben található hivatkozást EMRStudioURL.
    • A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Alkalmazási területek alatt vagy szerver a navigációs ablaktáblában.

Talál egy EMR-alkalmazást, amelyet a CloudFormation verem hozott létre a névvel emr-spark-redshift.

    • Ha az alkalmazás állapota Leállítva jelenik meg, ugorhat a következő lépésekre. Ha azonban az alkalmazás állapota Indítva, válassza ki az alkalmazás nevét, majd válassza ki Az alkalmazás leállítása és a Az alkalmazás leállítása ismét erősíteni.
  1. Az Amazon EMR Studio munkaterület törlése:
    • Az Amazon EMR Studio eléréséhez válassza ki vagy másolja a kulcshoz tartozó CloudFormation veremkimenetekben található hivatkozást EMRStudioURL.
    • A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a munkaterületek a navigációs ablaktáblában.
    • Válassza ki a létrehozott munkaterületet, és válassza ki töröl, majd válassza ki töröl ismét erősíteni.
  2. A CloudFormation verem törlése:
    • Az AWS CloudFormation konzolon navigáljon a korábban létrehozott veremhez.
    • Válassza ki a verem nevét, majd válassza ki töröl a verem eltávolításához és a bejegyzés részeként létrehozott erőforrások törléséhez.
    • A megerősítő képernyőn válassza a lehetőséget Verem törlése.

Következtetés

Ebben a bejegyzésben elmagyaráztuk, hogyan használhatja az Apache Spark Amazon Redshift integrációját az Amazon EMR segítségével az Amazon EC2-n, az Amazon EMR Serverless-en és az AWS Glue-on futó alkalmazások létrehozásához és üzembe helyezéséhez, hogy automatikusan alkalmazza a predikátumot és a lekérdezést az adatok lekérdezési teljesítményének optimalizálása érdekében. az Amazon Redshiftben. Erősen ajánlott az Amazon Redshift integráció használata az Apache Sparkhoz, hogy zökkenőmentesen és biztonságosan csatlakozhasson az Amazon Redshifthez az Amazon EMR vagy AWS Glue segítségével.

Íme néhány ügyfelünk véleménye az Apache Spark Amazon Redshift integrációjáról:

„Mérnökeinket felhatalmazzuk arra, hogy az Apache Spark segítségével Python és Scala használatával építsék fel adatfolyamaikat és alkalmazásaikat. Olyan testre szabott megoldást akartunk, amely egyszerűsíti a műveleteket, és gyorsabban és hatékonyabban szállít ügyfeleink számára, és ezt kapjuk az Apache Spark új Amazon Redshift integrációjával.”

– Huron Consulting

„A GE Aerospace az AWS-analitikát és az Amazon Redshiftet használja, hogy kritikus üzleti betekintést nyújtson a fontos üzleti döntések meghozatalához. Az Amazon S3-ról történő automatikus másolás támogatásával egyszerűbb adatfolyamokat építhetünk az Amazon S3-ból az Amazon Redshiftbe történő adatátvitelhez. Ez felgyorsítja adattermék-csoportjaink azon képességét, hogy hozzáférjenek az adatokhoz, és betekintést nyújtsanak a végfelhasználóknak. Több időt töltünk azzal, hogy az adatokon keresztül értéket teremtsünk, és kevesebb időt töltünk az integrációkkal.”

– GE Aerospace

„Arra összpontosítunk, hogy önkiszolgáló hozzáférést biztosítsunk az adatokhoz a Goldman Sachs összes felhasználója számára. A Legend, nyílt forráskódú adatkezelési és irányítási platformunk révén lehetővé tesszük a felhasználók számára, hogy adatközpontú alkalmazásokat fejlesszenek, és adatközpontú betekintést nyerjenek a pénzügyi szolgáltatási ágazatban folytatott együttműködésünk során. Az Apache Spark Amazon Redshift integrációjával adatplatform-csapatunk minimális manuális lépésekkel hozzáférhet az Amazon Redshift adataihoz, lehetővé téve a nulla kódú ETL-t, ami növeli a képességünket, hogy a mérnökök könnyebben összpontosíthassanak munkafolyamataik tökéletesítésére. teljes körű és időszerű információkat gyűjtenek. Arra számítunk, hogy javulni fog az alkalmazások teljesítménye és javul a biztonság, mivel a felhasználók mostantól könnyedén hozzáférhetnek az Amazon Redshift legújabb adataihoz.”

-Goldman Sachs


A szerzőkről

Gagan Brahmi az Amazon Web Services vezető specialistája a megoldások területén, és a big data elemzésére és az AI/ML platformra összpontosít. Gagan több mint 18 éves tapasztalattal rendelkezik az információs technológia területén. Segít ügyfeleinek nagymértékben skálázható, hatékony és biztonságos felhőalapú megoldások megtervezésében és felépítésében az AWS-en. Szabadidejében családjával tölti az idejét, és új helyeket fedez fel.

Vivek Gautam Data Architect, az AWS Professional Services adattóira szakosodott. Vállalati ügyfelekkel dolgozik, akik adattermékeket, elemzési platformokat és megoldásokat építenek az AWS-re. Amikor nem adattavakat építünk és tervezünk, Vivek élelmezésrajongó, aki szeret új úti célokat felfedezni és kirándulni.

Naresh Gautam az AWS Data Analytics és AI/ML vezetője 20 éves tapasztalattal, aki szívesen segít ügyfeleinek magas rendelkezésre állású, nagy teljesítményű és költséghatékony adatelemzési és AI/ML megoldások kialakításában, hogy az ügyfeleket adatvezérelt döntéshozatalban részesítse. . Szabadidejében szívesen meditál és főz.

Beaux Sharifi szoftverfejlesztő mérnök az Amazon Redshift illesztőprogramok csapatában, ahol az Amazon Redshift integráció fejlesztését vezeti Apache Spark csatlakozóval. Több mint 20 éves tapasztalattal rendelkezik adatvezérelt platformok építésében több iparágban. Szabadidejében szívesen tölt időt a családjával és szörfözik.

Időbélyeg:

Még több AWS Big Data