Yksinkertaista ja nopeutta Apache Spark -sovelluksia Amazon Redshift -tiedoissa Amazon Redshift -integraatiolla Apache Sparkille

Yksinkertaista ja nopeutta Apache Spark -sovelluksia Amazon Redshift -tiedoissa Amazon Redshift -integraatiolla Apache Sparkille

Lähdesolmu: 2597866

Asiakkaat käyttävät Amazonin punainen siirto suorittaakseen liiketoimintakriittistä analytiikkaansa petabuilla strukturoitua ja puolistrukturoitua dataa. Apache Spark on suosittu kehys, jota voit käyttää sovellusten rakentamiseen käyttötapauksiin, kuten ETL (extract, transform and load), interaktiivinen analytiikka ja koneoppiminen (ML). Apache Sparkin avulla voit rakentaa sovelluksia useilla kielillä, kuten Java, Scala ja Python, käyttämällä Amazon Redshift -tietovarastosi tietoja.

Amazon Redshift -integraatio Apache Sparkille auttaa kehittäjiä saumattomasti rakentamaan ja suorittamaan Apache Spark -sovelluksia Amazon Redshift -datan avulla. Kehittäjät voivat käyttää AWS-analytiikkaa ja ML-palveluita, kuten Amazonin EMR, AWS-liimaja Amazon Sage Maker rakentaa vaivattomasti Apache Spark -sovelluksia, jotka lukevat Amazon Redshift -tietovarastoaan ja kirjoittavat siihen. Voit tehdä sen tinkimättä sovellusten suorituskyvystä tai tietojesi tapahtumien johdonmukaisuudesta.

Tässä viestissä keskustelemme siitä, miksi Amazon Redshift -integraatio Apache Sparkille on kriittinen ja tehokas analytiikan ja ML:n kannalta. Lisäksi keskustelemme käyttötapauksista, joissa Amazon Redshift -integraatio Apache Sparkin kanssa tehostaa liiketoimintaa. Lopuksi opastamme sinut läpi vaiheittaiset esimerkit tämän virallisen AWS-liittimen käyttämisestä Apache Spark -sovelluksessa.

Amazon Redshift -integraatio Apache Sparkille

Amazon Redshift -integraatio Apache Sparkille minimoi kipinä-punasiirtymäliittimen hankalan ja usein manuaalisen asennuksen (yhteisöversio) ja lyhentää analytiikka- ja ML-tehtäviin valmistautumiseen tarvittavaa aikaa. Sinun tarvitsee vain määrittää yhteys tietovarastoon, ja voit alkaa työskennellä Amazon Redshift -tietojen kanssa Apache Spark -pohjaisista sovelluksista muutamassa minuutissa.

Voit käyttää useita pushdown-ominaisuuksia toimintoihin, kuten lajittelu-, aggregointi-, rajoitus-, liitos- ja skalaaritoimintoihin, jotta vain asiaankuuluvat tiedot siirretään Amazon Redshift -tietovarastosta kuluttavaan Apache Spark -sovellukseen. Näin voit parantaa sovellustesi suorituskykyä. Amazon Redshift -järjestelmänvalvojat voivat helposti tunnistaa Spark-pohjaisista sovelluksista luodun SQL:n. Tässä viestissä näytämme, kuinka voit selvittää Apache Spark -työn luoman SQL:n.

Lisäksi Amazon Redshift -integraatio Apache Sparkille käyttää Parquet-tiedostomuotoa, kun tiedot asetetaan väliaikaiseen hakemistoon. Amazon Redshift käyttää UNLOAD SQL -käskyä näiden väliaikaisten tietojen tallentamiseen Amazonin yksinkertainen tallennuspalvelu (Amazon S3). Apache Spark -sovellus hakee tulokset väliaikaisesta hakemistosta (tallennettu Parquet-tiedostomuodossa), mikä parantaa suorituskykyä.

Voit myös auttaa tekemään sovelluksistasi turvallisempia hyödyntämällä AWS-henkilöllisyyden ja käyttöoikeuksien hallinta (IAM) kirjautumistiedot Amazon Redshiftin muodostamiseksi.

Amazon Redshift -integraatio Apache Sparkille on rakennettu spark-redshift -liittimen päälle (yhteisöversio) ja parantaa sen suorituskykyä ja turvallisuutta, mikä auttaa sinua saamaan jopa 10 kertaa nopeamman sovelluksen suorituskyvyn.

Käyttötapauksia Amazon Redshiftin integroimiseksi Apache Sparkiin

Meidän käyttötapauksessamme tuotepohjaisen yrityksen johto haluaa tietää kunkin tuotteen myynnin useilla markkinoilla. Koska yrityksen myynti vaihtelee dynaamisesti, johdolle on tullut haaste seurata myyntiä useilla markkinoilla. Kokonaismyynti on kuitenkin laskussa, ja yrityksen johto haluaa selvittää, mitkä markkinat eivät toimi, jotta he voivat kohdistaa mainoskampanjoita näille markkinoille.

Useilla markkinoilla tapahtuvan myynnin osalta tuotemyyntitiedot, kuten tilaukset, tapahtumat ja lähetystiedot, ovat saatavilla Amazon S3:ssa Data Lakessa. Tietojen suunnittelutiimi voi käyttää Apache Sparkia Amazon EMR:n tai AWS Gluen kanssa analysoimaan näitä tietoja Amazon S3:ssa.

Varastotiedot ovat saatavilla Amazon Redshiftissä. Samoin tietotekniikkatiimi voi analysoida nämä tiedot Apache Sparkilla käyttämällä Amazon EMR:ää tai AWS Glue -työtä käyttämällä Amazon Redshift -integraatiota Apache Sparkille aggregaatioiden ja muunnosten suorittamiseen. Aggregoitu ja muunnettu tietojoukko voidaan tallentaa takaisin Amazon Redshiftiin käyttämällä Amazon Redshift -integraatiota Apache Sparkille.

Hajautetun kehyksen, kuten Apache Spark, ja Amazon Redshift -integraation käyttäminen Apache Sparkille voi tarjota näkyvyyttä koko datajärven ja tietovaraston välillä myyntinäkemysten luomiseksi. Nämä oivallukset voidaan antaa Amazon Redshiftin liiketoimintasidosryhmille ja yrityskäyttäjille, jotta he voivat tehdä tietoon perustuvia päätöksiä kohdistettujen kampanjoiden toteuttamiseksi pienituloisille markkinasegmenteille.

Lisäksi voimme käyttää Amazon Redshift -integraatiota Apache Sparkin kanssa seuraavissa käyttötapauksissa:

  • Amazon EMR- tai AWS Glue -asiakas, joka käyttää Apache Spark -töitä, haluaa muuntaa tiedot ja kirjoittaa ne Amazon Redshiftiin osana ETL-putkistoaan.
  • ML-asiakas käyttää Apache Sparkia SageMakerin kanssa ominaisuuksien suunnitteluun tietojen käyttämiseen ja muuntamiseen Amazon Redshiftissä
  • Amazon EMR-, AWS Glue- tai SageMaker-asiakas käyttää Apache Sparkia interaktiiviseen tietojen analysointiin kannettavien Amazon Redshift -tietojen kanssa.

Esimerkkejä Amazon Redshift -integraatiosta Apache Sparkille Apache Spark -sovelluksessa

Tässä viestissä näytämme vaiheet Amazon Redshiftin yhdistämiseksi Amazon EMR: stä Amazonin elastinen laskentapilvi (Amazon EC2), Amazon EMR-palvelimetonja AWS-liimaa käyttämällä yhteistä komentosarjaa. Seuraavassa esimerkkikoodissa luomme raportin, joka näyttää neljännesvuosittaisen myynnin vuodelle 2008. Tätä varten yhdistämme kaksi Amazon Redshift -taulukkoa käyttämällä Apache Spark DataFrame -kehystä, suoritamme predikaattien pushdownin, kokoamme ja lajittelemme tiedot ja kirjoitamme muunnetun tiedot takaisin Amazon Redshiftille. Skripti käyttää PySparkia

Käsikirjoitus käyttää IAM-pohjainen todennus Amazon Redshiftille. Amazon EMR:n ja AWS Gluen käyttämillä IAM-rooleilla tulee olla asianmukaiset oikeudet Amazon Redshiftin todentamiseen ja pääsy S3-säilöyn tilapäistä tietojen tallennusta varten.

Seuraava esimerkkikäytäntö sallii IAM-roolin kutsua GetClusterCredentials toiminnot:

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

Seuraava esimerkkikäytäntö sallii pääsyn S3-säilöyn väliaikaista tietojen tallennusta varten:

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

Täydellinen käsikirjoitus on seuraava:

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

Jos aiot käyttää edellistä komentosarjaa ympäristössäsi, muista korvata seuraavien muuttujien arvot ympäristöllesi sopivilla arvoilla: jdbc_iam_url, temp_dirja aws_role.

Seuraavassa osiossa käymme läpi vaiheet, joilla tämä komentosarja suoritetaan Amazon Redshiftissä saatavilla olevan mallitietojoukon yhdistämiseksi.

Edellytykset

Ennen kuin aloitamme, varmista, että seuraavat edellytykset täyttyvät:

Ota käyttöön resurssit AWS CloudFormationin avulla

Suorita seuraavat vaiheet ottaaksesi CloudFormation-pinon käyttöön:

  1. Kirjaudu sisään AWS-hallintakonsolija käynnistä sitten CloudFormation-pino:
    BDB-2063-launch-cloudformation-pino

Voit myös lataa CloudFormation-malli luoda tässä viestissä mainitut resurssit infrastruktuurin kautta koodina (IaC). Käytä tätä mallia, kun käynnistät uuden CloudFormation-pinon.

  1. Vieritä alas sivun alaosaan valitaksesi Tunnustan, että AWS CloudFormation saattaa luoda IAM-resursseja varten Kyvyt, valitse sitten Luo pino.

Pinon luontiprosessi kestää 15–20 minuuttia. CloudFormation-malli luo seuraavat resurssit:

    • Amazon VPC, jossa on tarvittavat aliverkot, reittitaulukot ja NAT-yhdyskäytävä
    • Nimellinen S3-ämpäri redshift-spark-databucket-xxxxxxx (huomaa, että xxxxxxx on satunnainen merkkijono, joka tekee ryhmän nimestä ainutlaatuisen)
    • Amazon Redshift -klusteri, jonka näytetiedot on ladattu tietokantaan dev ja ensisijainen käyttäjä redshiftmasteruser. Tätä blogikirjoitusta varten redshiftmasteruser järjestelmänvalvojan luvalla käytetään. Tuotantoympäristössä on kuitenkin suositeltavaa käyttää käyttäjää, jolla on hienorakeinen pääsynhallinta.
    • IAM-rooli, jota käytetään Amazon Redshiftissä ja joka voi pyytää väliaikaisia ​​valtuustietoja Amazon Redshift -klusterin kehittäjätietokannasta
    • Amazon EMR Studio tarvittavilla IAM-rooleilla
    • Amazon EMR -julkaisuversio 6.9.0 EC2-klusterissa tarvittavilla IAM-rooleilla
    • Amazon EMR Serverless -sovelluksen versio 6.9.0
    • AWS-liimaliitäntä ja AWS-liimatyön versio 4.0
    • A Jupyter-muistikirja käyttää Amazon EMR Studiota käyttämällä Amazon EMR:ää EC2-klusterissa
    • PySpark-skripti, joka suoritetaan käyttämällä Amazon EMR Studiota ja Amazon EMR Serverlessia
  1. Kun pinon luominen on valmis, valitse pinon nimi redshift-spark ja siirry kohtaan Lähdöt

Käytämme näitä lähtöarvoja myöhemmin tässä viestissä.

Seuraavissa osioissa näytämme vaiheet Amazon Redshift -integraatioon Apache Sparkille Amazon EMR:stä Amazon EC2:ssa, Amazon EMR Serverlessissä ja AWS Gluessa.

Käytä Amazon Redshift -integraatiota Apache Sparkin kanssa Amazon EMR:ssä EC2:ssa

Amazon EMR -julkaisuversiosta 6.9.0 ja uudemmista alkaen Amazon Redshift -integraatiota käyttävä liitin Apache Sparkille ja Amazon Redshift JDBC -ohjaimelle ovat saatavilla paikallisesti Amazon EMR:ssä. Nämä tiedostot sijaitsevat alla /usr/share/aws/redshift/ hakemistosta. Kuitenkin Amazon EMR:n aiemmissa versioissa yhteisö versio spark-redshift liitin on saatavissa.

Seuraava esimerkki näyttää kuinka yhdistää Amazon Redshift PySpark-ytimen avulla an Amazon EMR Studio muistikirja. CloudFormation-pino loi Amazon EMR Studion, Amazon EMR:n EC2-klusteriin ja Jupyter-muistikirjan käytettäväksi. Voit käydä tämän esimerkin läpi suorittamalla seuraavat vaiheet:

  1. Lataa S3-ämpäri saatavilla oleva Jupyter-muistikirja sinulle:
    • Etsi arvo CloudFormation-pinon lähdöistä EMRStudioNotebook, jonka pitäisi osoittaa redshift-spark-emr.ipynb muistikirja saatavilla S3-kauhassa.
    • Valitse linkki tai avaa linkki uudella välilehdellä kopioimalla muistikirjan URL-osoite.
    • Kun olet avannut linkin, lataa muistikirja valitsemalla Lataa, joka tallentaa tiedoston paikallisesti tietokoneellesi.
  1. Käytä Amazon EMR Studiota valitsemalla tai kopioimalla avaimen CloudFormation-pinon lähdöissä annettu linkki EMRStudioURL.
  2. Valitse siirtymisruudussa työtilat.
  3. Valita Luo työtila.
  4. Anna esimerkiksi työtilalle nimi redshift-spark.
  5. Laajenna Lisäasetukset ja valitse Liitä työtila EMR-klusteriin.
  6. Alle Kiinnitä EMR-klusteriin, valitse nimellinen EMR-klusteri emrCluster-Redshift-Spark.
  7. Valita Luo työtila.
  8. Kun Amazon EMR Studio -työtila on luotu ja se on Attached-tilassa, pääset työtilaan valitsemalla työtilan nimen.

Tämän pitäisi avata työtila uudelle välilehdelle. Huomaa, että jos sinulla on ponnahdusikkunoiden esto, sinun on ehkä sallittava Workspacen avata ponnahdusikkunoiden esto tai poistaa se käytöstä.

Lataamme nyt Amazon EMR Studio Workspaceen aiemmin lataamamme Jupyter-muistikirjan.

  1. Valita Lataa selataksesi paikallista tiedostojärjestelmääsi ja ladataksesi Jupyter-muistikirjan (redshift-spark-emr.ipynb).
  2. Valitse (kaksoisnapsauta) redshift-spark-emr.ipynb muistikirja työtilassa avataksesi muistikirjan.

Muistikirja sisältää tiedot eri tehtävistä, joita se suorittaa. Huomaa, että osiossa Määritä muuttujat, jotka muodostavat yhteyden Amazon Redshift -klusteriin, sinun ei tarvitse päivittää arvoja jdbc_iam_url, temp_dirja aws_role koska AWS CloudFormation päivittää ne puolestasi. AWS CloudFormation on myös suorittanut kohdassa mainitut vaiheet Edellytykset osa muistikirjasta.

Nyt voit aloittaa muistikirjan käytön.

  1. Suorita yksittäiset solut valitsemalla ne ja valitsemalla sitten Pelaa.

Voit myös käyttää näppäinyhdistelmää Shift + Enter or Vaihto+Return. Vaihtoehtoisesti voit suorittaa kaikki solut valitsemalla Suorita kaikki solut på den ajaa valikosta.

  1. Etsi Amazon Redshift -klusterille Apache Sparkin Amazon Redshift -integraation suorittama predikaatti-työntötoiminto.

Voimme myös nähdä Amazon S3:een tallennetut väliaikaiset tiedot optimoidussa Parquet-muodossa. Tulos näkyy ajamalla solua osassa Suorita viimeinen kysely Amazon Redshiftissä.

  1. Vahvistaaksesi työn luoman taulukon Amazon EMR:stä Amazon EC2:ssa, siirry Amazon Redshift -konsoliin ja valitse klusteri redshift-spark-redshift-cluster på den Varattujen klusterien kojelauta sivu.
  2. Klusterin tiedoissa kohdassa Kysely tiedot valikosta, valitse Kysely kyselyeditorissa v2.
  3. Valitse klusteri navigointiruudusta ja muodosta yhteys Amazon Redshift -klusteriin, kun se pyytää todennusta.
  4. valita Väliaikaiset valtakirjat.
  5. varten tietokanta, tulla sisään dev.
  6. varten käyttäjätunnus, tulla sisään redshiftmasteruser.
  7. Valita Säästä.
  8. Laajenna klusteri navigointiruudussa redshift-spark-redshift-cluster, laajenna kehittäjätietokanta, laajenna tickitja laajentaa taulukot luetellaksesi kaikki kaavion sisällä olevat taulukot tickit.

Pöytä pitäisi löytää test_emr.

  1. Valitse (napsauta hiiren oikealla painikkeella) taulukko test_emr, valitse sitten Valitse taulukko kysyäksesi taulukosta.
  2. Valita ajaa SQL-käskyn suorittamiseen.

Käytä Amazon Redshift -integraatiota Apache Sparkin kanssa Amazon EMR Serverless -sovelluksessa

Amazon EMR -julkaisuversio 6.9.0 ja uudemmat tarjoavat Amazon Redshift -integraation Apache Spark JAR:ille (joita hallinnoi Amazon Redshift) ja Amazon Redshift JDBC JAR:ille paikallisesti myös Amazon EMR Serverlessissä. Nämä tiedostot sijaitsevat alla /usr/share/aws/redshift/ hakemistosta. Seuraavassa esimerkissä käytämme Python-komentosarjaa, jonka aiemmin luomamme CloudFormation-pino on antanut saataville S3-säilössä.

  1. Kirjoita CloudFormation-pinon lähtöihin arvo muistiin EMRServerlessExecutionScript, joka on Python-skriptin sijainti S3-säihissä.
  2. Huomaa myös arvo EMRServerlessJobExecutionRole, joka on IAM-rooli, jota käytetään Amazon EMR Serverless -työn suorittamiseen.
  3. Käytä Amazon EMR Studiota valitsemalla tai kopioimalla avaimen CloudFormation-pinon lähdöissä annettu linkki EMRStudioURL.
  4. Valita Sovellukset varten serverless navigointipaneelissa.

Löydät CloudFormation-pinon luoman EMR-sovelluksen nimellä emr-spark-redshift.

  1. Valitse hakemuksen nimi lähettääksesi työtehtävän.
  2. Valita Lähetä työ.
  3. Alle Työn yksityiskohdatVarten Nimi, anna työlle tunnistettavissa oleva nimi.
  4. varten Suorituksen rooli, valitse aiemmin merkitsemäsi IAM-rooli CloudFormation-pinon lähdöstä.
  5. varten Skriptin sijainti, anna polku Python-skriptiin, jonka merkitsit aiemmin CloudFormation-pinon lähdöstä.
  6. Laajenna osio Kipinäominaisuudet Ja valitse Muokkaa tekstissä
  7. Kirjoita seuraava arvo tekstiruutuun, joka tarjoaa polun kohteeseen redshift-connector, Amazon Redshift JDBC -ohjain, spark-avro JAR ja minimal-json JAR-tiedostot:
    --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. Valita Lähetä työ.
  9. Odota, että työ on valmis ja ajon tila näkyy muodossa Menestys.
  10. Siirry Amazon Redshift -kyselyeditoriin nähdäksesi, onko taulukko luotu onnistuneesti.
  11. Tarkista Amazon Redshift -kyselyryhmälle suoritetut pushdown-kyselyt emr-serverless-redshift. Voit suorittaa seuraavan SQL-käskyn tietokantaa vastaan dev:
    SELECT query_text FROM SYS_QUERY_HISTORY WHERE query_label = 'emr-serverless-redshift' ORDER BY start_time DESC LIMIT 1

Näet, että push-down-kysely ja palautustulokset on tallennettu Parquet-tiedostomuodossa Amazon S3:ssa.

Käytä Amazon Redshift -integraatiota Apache Sparkin kanssa AWS Gluessa

AWS Gluen versiosta 4.0 ja uudemmista alkaen Apache Spark -työt, jotka muodostavat yhteyden Amazon Redshiftiin, voivat käyttää Amazon Redshift -integraatiota Apache Sparkille ja Amazon Redshift JDBC -ohjaimelle. Nykyiset AWS Glue -työt, jotka käyttävät jo Amazon Redshiftiä lähteenä tai kohteena, voidaan päivittää AWS Glue 4.0:ksi hyödyntääksesi tätä uutta liitintä. Tämän viestin mukana toimitettu CloudFormation-malli luo seuraavat AWS-liimaresurssit:

  • AWS-liimaliitäntä Amazon Redshiftille – Yhteys yhteyden muodostamiseksi AWS Gluesta Amazon Redshiftiin käyttämällä Amazon Redshift -integraatiota Apache Sparkille
  • AWS Glue -työhön liitetty IAM-rooli – IAM-rooli, joka hallitsee AWS-liimatyön suorittamisoikeuksia
  • AWS-liimatyö – AWS Glue -työn komentosarja, joka suorittaa muunnoksia ja aggregaatioita käyttämällä Amazon Redshift -integraatiota Apache Sparkille

Seuraava esimerkki käyttää AWS Glue -yhteyttä, joka on liitetty AWS Glue -työhön PySparkin kanssa, ja sisältää seuraavat vaiheet:

  1. Valitse AWS-liimakonsolista Liitännät navigointipaneelissa.
  2. Alle Liitännät, valitse CloudFormation-mallin luoma AWS-liimayhteys Amazon Redshiftille.
  3. Tarkista yhteystiedot.

Voit nyt käyttää tätä yhteyttä uudelleen työn sisällä tai useiden töiden kesken.

  1. On Liittimet -sivulla, valitse alta CloudFormation-pinon luoma AWS-liimatyö Sinun työsitai käytä AWS-liimatyötä käyttämällä avaimelle annettua URL-osoitetta GlueJob CloudFormation-pinon lähdössä.
  2. Käytä ja vahvista AWS-liimatyön komentosarja.
  3. On Työn yksityiskohdat välilehti, varmista se Liima versio asetetaan Liima 4.0.

Näin varmistetaan, että työ käyttää viimeisintä redshift-spark liitin.

  1. Laajentaa Lisäominaisuudet ja Liitännät -osiossa, varmista, että CloudFormation-pinon luoma yhteys on liitetty.
  2. Tarkista AWS-liimatyölle lisätyt työparametrit. Nämä arvot ovat saatavilla myös CloudFormation-pinon lähdössä.
  3. Valita Säästä ja sitten ajaa.

Voit tarkastella suoritettavan työn tilaa osoitteessa ajaa Tab.

  1. Kun työ on suoritettu onnistuneesti, voit tarkistaa AWS-liimatyön luoman taulukon testiliiman tulosteen.
  2. Tarkistamme Amazon Redshift -kyselyryhmälle suoritetut pushdown-kyselyt glue-redshift. Voit suorittaa seuraavan SQL-käskyn tietokantaa vastaan dev:
    SELECT query_text FROM SYS_QUERY_HISTORY WHERE query_label = 'glue-redshift' ORDER BY start_time DESC LIMIT 1

Parhaat käytännöt

Muista seuraavat parhaat käytännöt:

  • Harkitse Amazon EMR:n Apache Sparkin Amazon Redshift -integraatiota sen sijaan, että käytät redshift-spark liitin (yhteisöversio) uusia Apache Spark -töitäsi varten.
  • Jos sinulla on olemassa olevia Apache Spark -töitä käyttäen redshift-spark liitin (yhteisöversio), harkitse niiden päivittämistä käyttämään Amazon Redshift -integraatiota Apache Sparkille
  • Apache Sparkin Amazon Redshift -integraatio käyttää automaattisesti predikaattia ja kyselyä suorituskyvyn optimoimiseksi. Suosittelemme käyttämään tuettuja toimintoja (autopushdown) kyselyssäsi. Amazon Redshift -integraatio Apache Sparkille muuttaa toiminnon SQL-kyselyksi ja suorittaa kyselyn Amazon Redshiftissä. Tämä optimointi johtaa vaadittujen tietojen noutamiseen, joten Apache Spark voi käsitellä vähemmän tietoja ja parantaa suorituskykyä.
    • Harkitse aggregoitujen pushdown-funktioiden käyttöä, kuten avg, count, max, minja sum noutaa suodatettua dataa tietojenkäsittelyä varten.
    • Harkitse Boolen pushdown-operaattorien käyttöä, kuten in, isnull, isnotnull, contains, endswithja startswith noutaa suodatettua dataa tietojenkäsittelyä varten.
    • Harkitse loogisten pushdown-operaattoreiden käyttöä, kuten and, orja not (Tai !) noutaaksesi suodatettuja tietoja tietojenkäsittelyä varten.
  • On suositeltavaa välittää IAM-rooli käyttämällä parametria aws_iam_role Amazon Redshift -todennusta varten Apache Spark -sovelluksesta Amazon EMR:ssä tai AWS Gluessa. IAM-roolilla tulee olla tarvittavat oikeudet noutaa väliaikaiset IAM-tunnistetiedot Amazon Redshiftin todentamiseksi, kuten tämän blogin "Esimerkkejä Amazon Redshift -integraatiosta Apache Sparkille Apache Spark -sovelluksessa" -osiossa.
  • Tämän ominaisuuden avulla sinun ei tarvitse säilyttää Amazon Redshift -käyttäjänimeäsi ja salasanaasi Secrets Managerissa ja Amazon Redshift -tietokannassa.
  • Amazon Redshift käyttää UNLOAD SQL -käskyä näiden väliaikaisten tietojen tallentamiseen Amazon S3:lle. Apache Spark -sovellus hakee tulokset väliaikaisesta hakemistosta (tallennettu Parquet-tiedostomuodossa). Tätä Amazon S3:n väliaikaista hakemistoa ei puhdisteta automaattisesti, ja siksi se voi lisätä lisäkustannuksia. Suosittelemme käyttöä Amazon S3:n elinkaarikäytännöt määrittääksesi säilytyssäännöt S3-ämpärille.
  • On suositeltavaa kytkeä päälle Amazon Redshift -tarkastuksen kirjaus kirjataksesi tiedot yhteyksistä ja käyttäjien toiminnasta tietokantaasi.
  • On suositeltavaa kytkeä päälle Amazon Redshift -salaus salataksesi tietosi, kun Amazon Redshift kirjoittaa ne tietokeskuksiinsa ja purkaa niiden salauksen puolestasi, kun käytät niitä.
  • On suositeltavaa päivittää versioon AWS Glue v4.0 tai uudempi, jotta voit käyttää Amazon Redshift -integraatiota Apache Sparkille, joka on saatavana heti pakkauksesta. Päivittäminen tähän AWS Gluen versioon käyttää tätä ominaisuutta automaattisesti.
  • On suositeltavaa päivittää Amazon EMR v6.9.0:aan ja sitä uudempiin käyttääksesi Amazon Redshift -integraatiota Apache Sparkille. Sinun ei tarvitse hallinnoida ohjaimia tai JAR-tiedostoja erikseen.
  • Harkitse Amazon EMR Studio -kannettavien käyttöä Amazon Redshift -tietojen kanssa Apache Spark -sovelluksessasi.
  • Harkitse AWS Glue Studion käyttöä Apache Spark -töiden luomiseen visuaalisen käyttöliittymän avulla. Voit myös vaihtaa Apache Spark -koodin kirjoittamiseen joko Scalassa tai PySparkissa AWS Glue Studiossa.

Puhdistaa

Suorita seuraavat vaiheet puhdistaaksesi osana CloudFormation-mallia luodut resurssit varmistaaksesi, että sinua ei laskuteta resursseista, jos et enää käytä niitä:

  1. Pysäytä Amazon EMR Serverless -sovellus:
    • Käytä Amazon EMR Studiota valitsemalla tai kopioimalla avaimen CloudFormation-pinon lähdöissä annettu linkki EMRStudioURL.
    • Valita Sovellukset varten serverless navigointipaneelissa.

Löydät CloudFormation-pinon luoman EMR-sovelluksen nimellä emr-spark-redshift.

    • Jos sovelluksen tila on Pysäytetty, voit siirtyä seuraaviin vaiheisiin. Jos sovelluksen tila on kuitenkin Käynnistetty, valitse sovelluksen nimi ja valitse sitten Lopeta sovellus ja Lopeta sovellus vahvista uudelleen.
  1. Poista Amazon EMR Studio -työtila:
    • Käytä Amazon EMR Studiota valitsemalla tai kopioimalla avaimen CloudFormation-pinon lähdöissä annettu linkki EMRStudioURL.
    • Valita työtilat navigointipaneelissa.
    • Valitse luomasi työtila ja valitse Poista, valitse sitten Poista vahvista uudelleen.
  2. Poista CloudFormation-pino:
    • Siirry AWS CloudFormation -konsolissa aiemmin luomaasi pinoon.
    • Valitse pinon nimi ja valitse sitten Poista poistaaksesi pinon ja poistaaksesi osana tätä viestiä luodut resurssit.
    • Valitse vahvistusnäytöstä Poista pino.

Yhteenveto

Tässä viestissä selitimme, kuinka voit käyttää Amazon Redshift -integraatiota Apache Sparkille luodaksesi ja ottaaksesi käyttöön sovelluksia Amazon EMR:n kanssa Amazon EC2:ssa, Amazon EMR Serverlessissä ja AWS Gluessa predikaatin ja kyselyn painalluksen käyttämiseksi automaattisesti tietojen kyselyn suorituskyvyn optimoimiseksi. Amazon Redshiftissä. On erittäin suositeltavaa käyttää Amazon Redshift -integraatiota Apache Sparkille, jotta voit muodostaa saumattoman ja turvallisen yhteyden Amazon Redshiftiin Amazon EMR- tai AWS Gluesta.

Tässä on mitä jotkut asiakkaistamme sanovat Amazon Redshift -integraatiosta Apache Sparkille:

"Annamme insinöörimme rakentamaan tietoputkia ja sovelluksia Apache Sparkilla Pythonin ja Scalan avulla. Halusimme räätälöidyn ratkaisun, joka yksinkertaistaa toimintaa ja toimittaa asiakkaillemme nopeammin ja tehokkaammin, ja sen saamme uudella Amazon Redshift -integraatiolla Apache Sparkille."

– Huron Consulting

"GE Aerospace käyttää AWS-analytiikkaa ja Amazon Redshiftiä mahdollistaakseen kriittisiä liiketoimintatietoja, jotka ohjaavat tärkeitä liiketoimintapäätöksiä. Amazon S3:sta automaattisen kopioinnin tuella voimme rakentaa yksinkertaisempia dataputkia siirtääksemme tietoja Amazon S3:sta Amazon Redshiftiin. Tämä nopeuttaa tietotuotetiimiemme kykyä käyttää tietoja ja antaa oivalluksia loppukäyttäjille. Käytämme enemmän aikaa arvon lisäämiseen datan avulla ja vähemmän aikaa integraatioihin."

-GE Aerospace

"Keskitymme tarjoamaan itsepalvelukäyttöä dataan kaikille Goldman Sachsin käyttäjillemme. Legendin, avoimen lähdekoodin tiedonhallinta- ja hallintoalustamme, avulla annamme käyttäjille mahdollisuuden kehittää datakeskeisiä sovelluksia ja saada tietoon perustuvia oivalluksia, kun teemme yhteistyötä rahoituspalvelualalla. Amazon Redshift -integraation avulla Apache Sparkille tietoalustatiimimme pääsee käsiksi Amazon Redshift -tietoihin pienillä manuaalisilla vaiheilla, mikä mahdollistaa nollakoodin ETL:n, mikä lisää kykyämme helpottaa insinöörien keskittymistä työnkulkunsa parantamiseen. he keräävät täydelliset ja oikea-aikaiset tiedot. Odotamme näkevämme sovellusten suorituskyvyn paranevan ja turvallisuuden paranevan, koska käyttäjämme voivat nyt helposti käyttää Amazon Redshiftin uusimpia tietoja."

-Goldman Sachs


Tietoja Tekijät

Gagan Brahmi on Senior Specialist Solutions Architect, joka keskittyy big data-analytiikkaan ja AI/ML-alustaan ​​Amazon Web Services -palvelussa. Gaganilla on yli 18 vuoden kokemus tietotekniikasta. Hän auttaa asiakkaita suunnittelemaan ja rakentamaan erittäin skaalautuvia, tehokkaita ja turvallisia pilvipohjaisia ​​ratkaisuja AWS:lle. Vapaa-ajallaan hän viettää aikaa perheensä kanssa ja tutustuu uusiin paikkoihin.

Vivek Gautam on data-arkkitehti, joka on erikoistunut datajärviin AWS Professional Services -palvelussa. Hän työskentelee yritysasiakkaiden kanssa rakentaen datatuotteita, analytiikkaalustoja ja ratkaisuja AWS:lle. Kun ei rakenna ja suunnittele datajärviä, Vivek on ruokaharrastaja, joka haluaa myös tutustua uusiin matkakohteisiin ja patikoida.

Naresh Gautam on AWS:n Data Analytics- ja AI/ML-johtaja, jolla on 20 vuoden kokemus. Hän haluaa auttaa asiakkaita suunnittelemaan erittäin saatavilla olevia, tehokkaita ja kustannustehokkaita data-analytiikka- ja AI/ML-ratkaisuja, jotka mahdollistavat asiakkaiden datalähtöisen päätöksenteon. . Vapaa-ajallaan hän nauttii meditoinnista ja ruoanlaitosta.

Kaunis Sharifi on ohjelmistokehitysinsinööri Amazon Redshift -kuljettajien tiimissä, jossa hän johtaa Amazon Redshift -integraation kehitystä Apache Spark -liittimellä. Hänellä on yli 20 vuoden kokemus tietopohjaisten alustojen rakentamisesta useilla toimialoilla. Vapaa-ajallaan hän viettää aikaa perheensä kanssa ja surffaa.

Aikaleima:

Lisää aiheesta AWS Big Data