Simplificați și accelerați aplicațiile Apache Spark pe datele Amazon Redshift cu integrarea Amazon Redshift pentru Apache Spark

Simplificați și accelerați aplicațiile Apache Spark pe datele Amazon Redshift cu integrarea Amazon Redshift pentru Apache Spark

Nodul sursă: 2597866

Clienții folosesc Amazon RedShift pentru a-și rula analizele critice pentru afaceri pe petaocteți de date structurate și semi-structurate. Apache Spark este un cadru popular pe care îl puteți folosi pentru a crea aplicații pentru cazuri de utilizare, cum ar fi ETL (extragere, transformare și încărcare), analiză interactivă și învățare automată (ML). Apache Spark vă permite să creați aplicații într-o varietate de limbi, cum ar fi Java, Scala și Python, accesând datele din depozitul dvs. de date Amazon Redshift.

Integrarea Amazon Redshift pentru Apache Spark ajută dezvoltatorii să construiască și să ruleze fără probleme aplicații Apache Spark pe datele Amazon Redshift. Dezvoltatorii pot utiliza servicii de analiză AWS și ML, cum ar fi Amazon EMR, AWS Adeziv, și Amazon SageMaker pentru a construi fără efort aplicații Apache Spark care citesc și scriu în depozitul lor de date Amazon Redshift. Puteți face acest lucru fără a compromite performanța aplicațiilor dvs. sau consistența tranzacțională a datelor dvs.

În această postare, discutăm de ce integrarea Amazon Redshift pentru Apache Spark este critică și eficientă pentru analiză și ML. În plus, discutăm cazuri de utilizare care utilizează integrarea Amazon Redshift cu Apache Spark pentru a genera impactul asupra afacerii. În cele din urmă, vă prezentăm exemple pas cu pas despre cum să utilizați acest conector oficial AWS într-o aplicație Apache Spark.

Integrare Amazon Redshift pentru Apache Spark

Integrarea Amazon Redshift pentru Apache Spark minimizează procesul greoi și adesea manual de configurare a unui conector spark-redshift (versiunea comunității) și scurtează timpul necesar pregătirii pentru sarcinile de analiză și ML. Trebuie doar să specificați conexiunea la depozitul dvs. de date și puteți începe să lucrați cu datele Amazon Redshift din aplicațiile dvs. bazate pe Apache Spark în câteva minute.

Puteți utiliza mai multe capabilități pushdown pentru operațiuni precum sortare, agregare, limitare, unire și funcții scalare, astfel încât numai datele relevante să fie mutate din depozitul dvs. de date Amazon Redshift în aplicația Apache Spark consumatoare. Acest lucru vă permite să îmbunătățiți performanța aplicațiilor dvs. Administratorii Amazon Redshift pot identifica cu ușurință SQL-ul generat din aplicațiile bazate pe Spark. În această postare, arătăm cum puteți afla SQL-ul generat de job-ul Apache Spark.

Mai mult, integrarea Amazon Redshift pentru Apache Spark folosește formatul de fișier Parquet atunci când punerea în scenă a datelor într-un director temporar. Amazon Redshift utilizează instrucțiunea SQL UNLOAD pentru a stoca aceste date temporare Serviciul Amazon de stocare simplă (Amazon S3). Aplicația Apache Spark preia rezultatele din directorul temporar (stocat în format de fișier Parquet), ceea ce îmbunătățește performanța.

Puteți, de asemenea, să vă faceți aplicațiile mai sigure utilizând Gestionarea identității și accesului AWS (IAM) pentru a vă conecta la Amazon Redshift.

Integrarea Amazon Redshift pentru Apache Spark este construită deasupra conectorului spark-redshift (versiunea comunității) și îl îmbunătățește pentru performanță și securitate, ajutându-vă să obțineți performanță a aplicației de până la 10 ori mai rapidă.

Cazuri de utilizare pentru integrarea Amazon Redshift cu Apache Spark

Pentru cazul nostru de utilizare, conducerea companiei bazate pe produse dorește să cunoască vânzările pentru fiecare produs pe mai multe piețe. Pe măsură ce vânzările pentru companie fluctuează dinamic, a devenit o provocare pentru conducere să urmărească vânzările pe mai multe piețe. Cu toate acestea, vânzările generale sunt în scădere, iar conducerea companiei dorește să afle care piețe nu sunt performante, astfel încât să poată viza aceste piețe pentru campanii de promovare.

Pentru vânzările pe mai multe piețe, datele despre vânzările de produse, cum ar fi comenzile, tranzacțiile și datele de expediere, sunt disponibile pe Amazon S3 în data lake. Echipa de inginerie a datelor poate folosi Apache Spark cu Amazon EMR sau AWS Glue pentru a analiza aceste date în Amazon S3.

Datele de inventar sunt disponibile în Amazon Redshift. În mod similar, echipa de inginerie a datelor poate analiza aceste date cu Apache Spark utilizând Amazon EMR sau un job AWS Glue utilizând integrarea Amazon Redshift pentru Apache Spark pentru a efectua agregări și transformări. Setul de date agregat și transformat poate fi stocat înapoi în Amazon Redshift utilizând integrarea Amazon Redshift pentru Apache Spark.

Folosirea unui cadru distribuit precum Apache Spark cu integrarea Amazon Redshift pentru Apache Spark poate oferi vizibilitate peste lacul de date și depozitul de date pentru a genera informații despre vânzări. Aceste informații pot fi puse la dispoziția părților interesate de afaceri și a utilizatorilor de linie de afaceri în Amazon Redshift pentru a lua decizii informate pentru a desfășura promoții direcționate pentru segmentele de piață cu venituri mici.

În plus, putem folosi integrarea Amazon Redshift cu Apache Spark în următoarele cazuri de utilizare:

  • Un client Amazon EMR sau AWS Glue care rulează joburi Apache Spark dorește să transforme datele și să le scrie în Amazon Redshift ca parte a conductei lor ETL
  • Un client ML folosește Apache Spark cu SageMaker pentru inginerie de caracteristici pentru accesarea și transformarea datelor în Amazon Redshift
  • Un client Amazon EMR, AWS Glue sau SageMaker folosește Apache Spark pentru analiza interactivă a datelor cu date de pe Amazon Redshift din notebook-uri

Exemple pentru integrarea Amazon Redshift pentru Apache Spark într-o aplicație Apache Spark

În această postare, arătăm pașii pentru a conecta Amazon Redshift de la Amazon EMR Cloud Elastic de calcul Amazon (Amazon EC2), Amazon EMR fără serverși AWS Glue folosind un script comun. În următorul exemplu de cod, generăm un raport care arată vânzările trimestriale pentru anul 2008. Pentru a face acest lucru, unim două tabele Amazon Redshift utilizând un Apache Spark DataFrame, rulăm un predicat pushdown, cumulăm și sortăm datele și scriem datele transformate. datele înapoi la Amazon Redshift. Scriptul folosește PySpark

Scriptul folosește Autentificare bazată pe IAM pentru Amazon Redshift. Rolurile IAM utilizate de Amazon EMR și AWS Glue ar trebui să aibă permisiunile corespunzătoare pentru a autentifica Amazon Redshift și acces la un compartiment S3 pentru stocarea temporară a datelor.

Următorul exemplu de politică permite rolului IAM să apeleze GetClusterCredentials operațiuni:

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

Următorul exemplu de politică permite accesul la un compartiment S3 pentru stocarea temporară a datelor:

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

Scriptul complet este următorul:

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()

Dacă intenționați să utilizați scriptul precedent în mediul dvs., asigurați-vă că înlocuiți valorile pentru următoarele variabile cu valorile adecvate pentru mediul dvs.: jdbc_iam_url, temp_dir, și aws_role.

În secțiunea următoare, parcurgem pașii pentru a rula acest script pentru a agrega un exemplu de set de date care este disponibil în Amazon Redshift.

Cerințe preliminare

Înainte de a începe, asigurați-vă că sunt îndeplinite următoarele cerințe preliminare:

Implementați resurse folosind AWS CloudFormation

Parcurgeți următorii pași pentru a implementa stiva CloudFormation:

  1. Conectați-vă la Consola de administrare AWS, apoi lansați stiva CloudFormation:
    BDB-2063-launch-cloudformation-stack

Puteţi, de asemenea, descărcați șablonul CloudFormation pentru a crea resursele menționate în această postare prin infrastructură ca cod (IaC). Utilizați acest șablon când lansați o nouă stivă CloudFormation.

  1. Derulați în jos în partea de jos a paginii pentru a selecta Recunosc că AWS CloudFormation ar putea crea resurse IAM în Capabilitățile, Apoi alegeți Creați stivă.

Procesul de creare a stivei durează 15-20 de minute. Șablonul CloudFormation creează următoarele resurse:

    • Un Amazon VPC cu subrețelele necesare, tabelele de rute și gateway-ul NAT
    • O găleată S3 cu numele redshift-spark-databucket-xxxxxxx (rețineți că xxxxxxx este un șir aleatoriu pentru a face numele găleții unic)
    • Un cluster Amazon Redshift cu date eșantion încărcate în baza de date dev și utilizatorul principal redshiftmasteruser. În scopul acestei postări pe blog, redshiftmasteruser cu permisiuni administrative este utilizat. Cu toate acestea, se recomandă utilizarea unui utilizator cu control al accesului fin în mediul de producție.
    • Un rol IAM care să fie utilizat pentru Amazon Redshift, cu posibilitatea de a solicita acreditări temporare din baza de date de dezvoltare a clusterului Amazon Redshift
    • Amazon EMR Studio cu rolurile IAM necesare
    • Amazon EMR lansează versiunea 6.9.0 pe un cluster EC2 cu rolurile IAM necesare
    • O aplicație Amazon EMR Serverless versiunea 6.9.0
    • O conexiune AWS Glue și un job AWS Glue versiunea 4.0
    • A Caiet Jupyter pentru a rula folosind Amazon EMR Studio folosind Amazon EMR pe un cluster EC2
    • Un script PySpark pentru a rula folosind Amazon EMR Studio și Amazon EMR Serverless
  1. După ce crearea stivei este completă, alegeți numele stivei redshift-spark și navigați la ieşiri

Utilizăm aceste valori de ieșire mai târziu în această postare.

În secțiunile următoare, arătăm pașii pentru integrarea Amazon Redshift pentru Apache Spark de la Amazon EMR pe Amazon EC2, Amazon EMR Serverless și AWS Glue.

Utilizați integrarea Amazon Redshift cu Apache Spark pe Amazon EMR pe EC2

Începând de la versiunea Amazon EMR versiunea 6.9.0 și mai sus, conectorul care utilizează integrarea Amazon Redshift pentru Apache Spark și driverul Amazon Redshift JDBC sunt disponibile local pe Amazon EMR. Aceste fișiere sunt situate sub /usr/share/aws/redshift/ director. Cu toate acestea, în versiunile anterioare ale Amazon EMR, comunitate Versiunea spark-redshift conector este disponibil.

Următorul exemplu arată cum să conectați Amazon Redshift utilizând un nucleu PySpark printr-un Amazon EMR Studio caiet. Stiva CloudFormation a creat Amazon EMR Studio, Amazon EMR pe un cluster EC2 și un notebook Jupyter disponibil pentru rulare. Pentru a parcurge acest exemplu, parcurgeți următorii pași:

  1. Descărcați caietul Jupyter disponibil în compartimentul S3 pentru dvs.:
    • În ieșirile stivei CloudFormation, căutați valoarea pentru EMRStudioNotebook, care ar trebui să indice către redshift-spark-emr.ipynb notebook disponibil în găleată S3.
    • Alegeți linkul sau deschideți linkul într-o filă nouă prin copierea adresei URL pentru blocnotes.
    • După ce deschideți linkul, descărcați caietul alegând Descarcă, care va salva fișierul local pe computer.
  1. Accesați Amazon EMR Studio alegând sau copiend linkul furnizat în ieșirile stivei CloudFormation pentru cheie EMRStudioURL.
  2. În panoul de navigare, alegeți Spațiile de lucru.
  3. Alege Creați spațiu de lucru.
  4. Furnizați un nume pentru spațiul de lucru, de exemplu redshift-spark.
  5. extinde Configurare avansată și selectați Atașați spațiul de lucru la un cluster EMR.
  6. În Atașați la un cluster EMR, alegeți clusterul EMR cu numele emrCluster-Redshift-Spark.
  7. Alege Creați spațiu de lucru.
  8. După ce spațiul de lucru Amazon EMR Studio este creat și în starea Atașat, puteți accesa spațiul de lucru alegând numele spațiului de lucru.

Aceasta ar trebui să deschidă spațiul de lucru într-o filă nouă. Rețineți că, dacă aveți o opțiune de blocare a ferestrelor pop-up, poate fi necesar să permiteți spațiului de lucru să deschidă sau să dezactiveze opțiunea de blocare a ferestrelor pop-up.

În spațiul de lucru Amazon EMR Studio, acum încărcăm notebook-ul Jupyter pe care l-am descărcat mai devreme.

  1. Alege Încărcați pentru a răsfoi sistemul de fișiere local și a încărca blocnotesul Jupyter (redshift-spark-emr.ipynb).
  2. Alegeți (fă dublu clic) pe redshift-spark-emr.ipynb blocnotes în spațiul de lucru pentru a deschide blocnotesul.

Notebook-ul oferă detalii despre diferitele sarcini pe care le efectuează. Rețineți că în secțiune Definiți variabilele pentru a vă conecta la clusterul Amazon Redshift, nu trebuie să actualizați valorile pentru jdbc_iam_url, temp_dir, și aws_role deoarece acestea sunt actualizate pentru dvs. de AWS CloudFormation. AWS CloudFormation a efectuat, de asemenea, pașii menționați în Cerințe preliminare secțiunea caietului.

Acum puteți începe să rulați notebook-ul.

  1. Rulați celulele individuale selectându-le și apoi alegând Joaca.

De asemenea, puteți utiliza combinația de taste de Shift + Enter or Shift+Retur. Alternativ, puteți rula toate celulele alegând Rulați toate celulele pe Alerga meniu.

  1. Găsiți operația de pushdown a predicatului efectuată pe clusterul Amazon Redshift de integrarea Amazon Redshift pentru Apache Spark.

Putem vedea și datele temporare stocate pe Amazon S3 în format optimizat Parquet. Ieșirea poate fi văzută din rularea celulei din secțiune Obțineți ultima interogare executată pe Amazon Redshift.

  1. Pentru a valida tabelul creat de jobul de la Amazon EMR pe Amazon EC2, navigați la consola Amazon Redshift și alegeți clusterul redshift-spark-redshift-cluster pe Tabloul de bord pentru clustere furnizate .
  2. În detaliile clusterului, pe Interogați datele meniu, alegeți Interogare în editorul de interogări v2.
  3. Alegeți clusterul din panoul de navigare și conectați-vă la clusterul Amazon Redshift când solicită autentificare.
  4. Selectați Acreditări temporare.
  5. Pentru Baza de date, introduce dev.
  6. Pentru nume utilizator, introduce redshiftmasteruser.
  7. Alege Economisiți.
  8. În panoul de navigare, extindeți clusterul redshift-spark-redshift-cluster, extinde baza de date dev, extinde tickit, și extindeți Mese pentru a lista toate tabelele din interiorul schemei tickit.

Ar trebui să găsești masa test_emr.

  1. Alegeți (clic dreapta) tabelul test_emr, Apoi alegeți Selectați tabelul pentru a interoga tabelul.
  2. Alege Alerga pentru a rula instrucțiunea SQL.

Utilizați integrarea Amazon Redshift cu Apache Spark pe Amazon EMR Serverless

Versiunea de lansare Amazon EMR 6.9.0 și versiunile ulterioare oferă integrarea Amazon Redshift pentru JAR-urile Apache Spark (gestionate de Amazon Redshift) și JAR-urile Amazon Redshift JDBC la nivel local și pe Amazon EMR Serverless. Aceste fișiere sunt situate sub /usr/share/aws/redshift/ director. În exemplul următor, folosim scriptul Python pus la dispoziție în compartimentul S3 de către stiva CloudFormation pe care am creat-o mai devreme.

  1. În ieșirile stivei CloudFormation, notați valoarea pentru EMRServerlessExecutionScript, care este locația scriptului Python în compartimentul S3.
  2. Rețineți și valoarea pentru EMRServerlessJobExecutionRole, care este rolul IAM care trebuie utilizat la rularea jobului Amazon EMR Serverless.
  3. Accesați Amazon EMR Studio alegând sau copiend linkul furnizat în ieșirile stivei CloudFormation pentru cheie EMRStudioURL.
  4. Alege aplicatii în serverless în panoul de navigare.

Veți găsi o aplicație EMR creată de stiva CloudFormation cu numele emr-spark-redshift.

  1. Alegeți numele aplicației pentru a trimite un job.
  2. Alege Trimiteți jobul.
  3. În Detaliile postului, Pentru Nume si Prenume, introduceți un nume identificabil pentru job.
  4. Pentru Rol de rulare, alegeți rolul IAM pe care l-ați notat din rezultatul stivei CloudFormation mai devreme.
  5. Pentru Locația scriptului, furnizați calea către scriptul Python pe care l-ați notat mai devreme din rezultatul stivei CloudFormation.
  6. Extindeți secțiunea Proprietăți de scânteie și alegeți Editați în text
  7. Introduceți următoarea valoare în caseta de text, care oferă calea către redshift-connector, driver Amazon Redshift JDBC, spark-avro JAR, și minimal-json Fișiere JAR:
    --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. Alege Trimiteți jobul.
  9. Așteptați finalizarea lucrării și starea rulării să se afișeze ca Succes.
  10. Navigați la editorul de interogări Amazon Redshift pentru a vedea dacă tabelul a fost creat cu succes.
  11. Verificați interogările pushdown rulate pentru grupul de interogări Amazon Redshift emr-serverless-redshift. Puteți rula următoarea instrucțiune SQL pe baza de date dev:
    SELECT query_text FROM SYS_QUERY_HISTORY WHERE query_label = 'emr-serverless-redshift' ORDER BY start_time DESC LIMIT 1

Puteți vedea că interogarea pushdown și rezultatele returnate sunt stocate în format de fișier Parquet pe Amazon S3.

Utilizați integrarea Amazon Redshift cu Apache Spark pe AWS Glue

Începând cu AWS Glue versiunea 4.0 și mai sus, lucrările Apache Spark care se conectează la Amazon Redshift pot folosi integrarea Amazon Redshift pentru Apache Spark și driverul Amazon Redshift JDBC. Lucrările AWS Glue existente care utilizează deja Amazon Redshift ca sursă sau țintă pot fi actualizate la AWS Glue 4.0 pentru a profita de acest nou conector. Șablonul CloudFormation furnizat împreună cu această postare creează următoarele resurse AWS Glue:

  • Conexiune AWS Glue pentru Amazon Redshift – Conexiunea pentru stabilirea conexiunii de la AWS Glue la Amazon Redshift utilizând integrarea Amazon Redshift pentru Apache Spark
  • Rolul IAM atașat jobului AWS Glue – Rolul IAM pentru a gestiona permisiunile pentru a rula jobul AWS Glue
  • Lucrare AWS Glue – Scriptul pentru jobul AWS Glue care efectuează transformări și agregări folosind integrarea Amazon Redshift pentru Apache Spark

Următorul exemplu utilizează conexiunea AWS Glue atașată jobului AWS Glue cu PySpark și include următorii pași:

  1. Pe consola AWS Glue, alegeți Conexiuni în panoul de navigare.
  2. În Conexiuni, alegeți conexiunea AWS Glue pentru Amazon Redshift creată de șablonul CloudFormation.
  3. Verificați detaliile conexiunii.

Acum puteți reutiliza această conexiune într-un job sau în mai multe joburi.

  1. Pe conectori pagina, alegeți jobul AWS Glue creat de stiva CloudFormation de sub Joburile tale, sau accesați lucrarea AWS Glue utilizând adresa URL furnizată pentru cheie GlueJob în ieșirea stivei CloudFormation.
  2. Accesați și verificați scriptul pentru jobul AWS Glue.
  3. Pe Detaliile postului fila, asigurați-vă că Varianta cu lipici este setat la Adeziv 4.0.

Acest lucru asigură că lucrarea utilizează cele mai recente redshift-spark conector.

  1. Extinde Proprietăți avansate și, în Conexiuni secțiunea, verificați dacă conexiunea creată de stiva CloudFormation este atașată.
  2. Verificați parametrii jobului adăugați pentru jobul AWS Glue. Aceste valori sunt disponibile și în rezultatul pentru stiva CloudFormation.
  3. Alege Economisiți și apoi Alerga.

Puteți vedea starea lucrării executate pe Alerga tab.

  1. După ce executarea lucrării s-a încheiat cu succes, puteți verifica rezultatul testului-clei de tabel creat de jobul AWS Glue.
  2. Verificăm interogările pushdown rulate pentru grupul de interogări Amazon Redshift glue-redshift. Puteți rula următoarea instrucțiune SQL pe baza de date dev:
    SELECT query_text FROM SYS_QUERY_HISTORY WHERE query_label = 'glue-redshift' ORDER BY start_time DESC LIMIT 1

Cele mai bune practici

Rețineți următoarele bune practici:

  • Luați în considerare utilizarea integrării Amazon Redshift pentru Apache Spark de la Amazon EMR în loc să utilizați redshift-spark conector (versiunea de comunitate) pentru noile dvs. joburi Apache Spark.
  • Dacă aveți joburi Apache Spark existente utilizând redshift-spark conector (versiunea de comunitate), luați în considerare actualizarea acestora pentru a utiliza integrarea Amazon Redshift pentru Apache Spark
  • Integrarea Amazon Redshift pentru Apache Spark aplică automat predicatul și interogarea pushdown pentru a optimiza performanța. Vă recomandăm să utilizați funcțiile acceptate (autopushdown) în interogarea dvs. Integrarea Amazon Redshift pentru Apache Spark va transforma funcția într-o interogare SQL și va rula interogarea în Amazon Redshift. Această optimizare are ca rezultat recuperarea datelor necesare, astfel încât Apache Spark poate procesa mai puține date și poate avea performanțe mai bune.
    • Luați în considerare utilizarea funcțiilor pushdown agregate, cum ar fi avg, count, max, min, și sum pentru a prelua date filtrate pentru prelucrarea datelor.
    • Luați în considerare utilizarea operatorilor pushdown booleeni, cum ar fi in, isnull, isnotnull, contains, endswith, și startswith pentru a prelua date filtrate pentru prelucrarea datelor.
    • Luați în considerare utilizarea operatorilor logici pushdown, cum ar fi and, or, și not (Sau !) pentru a prelua date filtrate pentru prelucrarea datelor.
  • Este recomandat să treceți un rol IAM folosind parametrul aws_iam_role pentru autentificarea Amazon Redshift din aplicația Apache Spark pe Amazon EMR sau AWS Glue. Rolul IAM ar trebui să aibă permisiunile necesare pentru a prelua acreditările IAM temporare pentru a se autentifica la Amazon Redshift, așa cum se arată în secțiunea „Exemple de integrare Amazon Redshift pentru Apache Spark într-o aplicație Apache Spark” a acestui blog.
  • Cu această funcție, nu trebuie să vă păstrați numele de utilizator și parola Amazon Redshift în managerul de secrete și baza de date Amazon Redshift.
  • Amazon Redshift utilizează instrucțiunea UNLOAD SQL pentru a stoca aceste date temporare pe Amazon S3. Aplicația Apache Spark preia rezultatele din directorul temporar (stocat în format de fișier Parquet). Acest director temporar de pe Amazon S3 nu este curățat automat și, prin urmare, ar putea adăuga costuri suplimentare. Vă recomandăm să utilizați Politicile ciclului de viață Amazon S3 pentru a defini regulile de reținere pentru găleata S3.
  • Se recomandă pornirea Înregistrare de audit Amazon Redshift pentru a înregistra informațiile despre conexiuni și activitățile utilizatorilor din baza de date.
  • Se recomandă pornirea Criptare Amazon Redshift în repaus pentru a vă cripta datele pe măsură ce Amazon Redshift le scrie în centrele sale de date și pentru a le decripta pentru dvs. atunci când le accesați.
  • Se recomandă să faceți upgrade la AWS Glue v4.0 și versiuni ulterioare pentru a utiliza integrarea Amazon Redshift pentru Apache Spark, care este disponibilă imediat. Actualizarea la această versiune de AWS Glue va folosi automat această funcție.
  • Se recomandă să faceți upgrade la Amazon EMR v6.9.0 și versiuni ulterioare pentru a utiliza integrarea Amazon Redshift pentru Apache Spark. Nu trebuie să gestionați în mod explicit niciun driver sau fișier JAR.
  • Luați în considerare utilizarea notebook-urilor Amazon EMR Studio pentru a interacționa cu datele dvs. Amazon Redshift din aplicația Apache Spark.
  • Luați în considerare utilizarea AWS Glue Studio pentru a crea joburi Apache Spark folosind o interfață vizuală. De asemenea, puteți trece la scrierea codului Apache Spark în Scala sau PySpark în AWS Glue Studio.

A curăța

Parcurgeți următorii pași pentru a curăța resursele care sunt create ca parte a șablonului CloudFormation pentru a vă asigura că nu sunteți facturat pentru resurse dacă nu le veți mai folosi:

  1. Opriți aplicația Amazon EMR Serverless:
    • Accesați Amazon EMR Studio alegând sau copiend linkul furnizat în ieșirile stivei CloudFormation pentru cheie EMRStudioURL.
    • Alege aplicatii în serverless în panoul de navigare.

Veți găsi o aplicație EMR creată de stiva CloudFormation cu numele emr-spark-redshift.

    • Dacă starea aplicației arată ca Oprit, puteți trece la pașii următori. Cu toate acestea, dacă starea aplicației este Pornită, alegeți numele aplicației, apoi alegeți Opriți aplicația și Opriți aplicația din nou pentru a confirma.
  1. Ștergeți spațiul de lucru Amazon EMR Studio:
    • Accesați Amazon EMR Studio alegând sau copiend linkul furnizat în ieșirile stivei CloudFormation pentru cheie EMRStudioURL.
    • Alege Spațiile de lucru în panoul de navigare.
    • Selectați spațiul de lucru pe care l-ați creat și alegeți Șterge, Apoi alegeți Șterge din nou pentru a confirma.
  2. Ștergeți stiva CloudFormation:
    • Pe consola AWS CloudFormation, navigați la stiva pe care ați creat-o mai devreme.
    • Alegeți numele stivei și apoi alegeți Șterge pentru a elimina stiva și a șterge resursele create ca parte a acestei postări.
    • Pe ecranul de confirmare, alegeți Șterge stiva.

Concluzie

În această postare, am explicat cum puteți utiliza integrarea Amazon Redshift pentru Apache Spark pentru a construi și implementa aplicații cu Amazon EMR pe Amazon EC2, Amazon EMR Serverless și AWS Glue pentru a aplica automat predicatul și interogarea pushdown pentru a optimiza performanța interogării pentru date. în Amazon Redshift. Este foarte recomandat să utilizați integrarea Amazon Redshift pentru Apache Spark pentru o conexiune perfectă și sigură la Amazon Redshift de la Amazon EMR sau AWS Glue.

Iată ce au de spus unii dintre clienții noștri despre integrarea Amazon Redshift pentru Apache Spark:

„Le dăm putere inginerilor noștri să-și construiască conductele și aplicațiile de date cu Apache Spark folosind Python și Scala. Ne-am dorit o soluție personalizată care să simplifice operațiunile și să fie livrate mai rapid și mai eficient pentru clienții noștri și asta este ceea ce obținem cu noua integrare Amazon Redshift pentru Apache Spark.”

— Huron Consulting

„GE Aerospace folosește AWS analytics și Amazon Redshift pentru a permite informații critice de afaceri care conduc la deciziile de afaceri importante. Cu suportul pentru copierea automată de la Amazon S3, putem construi conducte de date mai simple pentru a muta datele de la Amazon S3 la Amazon Redshift. Acest lucru accelerează capacitatea echipelor noastre de produse de date de a accesa date și de a oferi informații utilizatorilor finali. Petrecem mai mult timp adăugând valoare prin date și mai puțin timp pe integrări.”

—GE Aerospace

„Accentul nostru este acela de a oferi acces în sistem self-service la date pentru toți utilizatorii noștri de la Goldman Sachs. Prin Legend, platforma noastră open-source de gestionare și guvernare a datelor, le permitem utilizatorilor să dezvolte aplicații centrate pe date și să obțină informații bazate pe date pe măsură ce colaborăm în industria serviciilor financiare. Odată cu integrarea Amazon Redshift pentru Apache Spark, echipa noastră de platformă de date va putea accesa datele Amazon Redshift cu pași manuali minimi, permițând ETL cu cod zero care ne va crește capacitatea de a face mai ușor pentru ingineri să se concentreze pe perfecționarea fluxului de lucru ca colectează informații complete și în timp util. Ne așteptăm să vedem o îmbunătățire a performanței aplicațiilor și o securitate îmbunătățită, deoarece utilizatorii noștri pot accesa acum cu ușurință cele mai recente date din Amazon Redshift.”

— Goldman Sachs


Despre Autori

Gagan Brahmi este un arhitect de soluții de specialitate senior, concentrat pe analiza datelor mari și platforma AI/ML la Amazon Web Services. Gagan are peste 18 ani de experiență în tehnologia informației. El îi ajută pe clienți să proiecteze și să construiască soluții în cloud foarte scalabile, performante și sigure pe AWS. În timpul liber, își petrece timpul cu familia și explorează locuri noi.

Vivek Gautam este arhitect de date cu specializare în lacuri de date la AWS Professional Services. Lucrează cu clienții întreprinderi, creând produse de date, platforme de analiză și soluții pe AWS. Când nu construiește și proiectează lacuri de date, Vivek este un pasionat de mâncare căruia îi place, de asemenea, să exploreze noi destinații de călătorie și să facă drumeții.

Naresh Gautam este un lider în analiza datelor și AI/ML la AWS cu 20 de ani de experiență, căruia îi place să ajute clienții să proiecteze analize de date de înaltă performanță și rentabilitate și soluții AI/ML pentru a oferi clienților posibilitatea de a lua decizii bazate pe date. . În timpul liber, îi place meditația și gătitul.

Beaux Sharifi este inginer de dezvoltare software în cadrul echipei de șoferi Amazon Redshift, unde conduce dezvoltarea integrării Amazon Redshift cu conectorul Apache Spark. Are peste 20 de ani de experiență în construirea de platforme bazate pe date în mai multe industrii. În timpul liber, îi place să petreacă timpul cu familia și să facă surfing.

Timestamp-ul:

Mai mult de la AWS Big Data