Poenostavite in pospešite aplikacije Apache Spark na podatkih Amazon Redshift z integracijo Amazon Redshift za Apache Spark

Poenostavite in pospešite aplikacije Apache Spark na podatkih Amazon Redshift z integracijo Amazon Redshift za Apache Spark

Izvorno vozlišče: 2597866

Stranke uporabljajo Amazon RedShift za izvajanje svoje poslovno kritične analitike na petabajtih strukturiranih in polstrukturiranih podatkov. Apache Spark je priljubljeno ogrodje, ki ga lahko uporabite za gradnjo aplikacij za primere uporabe, kot so ETL (izvleček, transformacija in nalaganje), interaktivna analitika in strojno učenje (ML). Apache Spark vam omogoča izdelavo aplikacij v različnih jezikih, kot so Java, Scala in Python, z dostopom do podatkov v vašem podatkovnem skladišču Amazon Redshift.

Integracija Amazon Redshift za Apache Spark pomaga razvijalcem brezhibno graditi in izvajati aplikacije Apache Spark na podatkih Amazon Redshift. Razvijalci lahko uporabljajo analitiko AWS in storitve ML, kot je npr Amazonski EMR, AWS lepiloin Amazon SageMaker za enostavno izdelavo aplikacij Apache Spark, ki berejo in pišejo v njihovo podatkovno skladišče Amazon Redshift. To lahko storite, ne da bi pri tem ogrozili zmogljivost vaših aplikacij ali transakcijsko doslednost vaših podatkov.

V tej objavi razpravljamo o tem, zakaj je integracija Amazon Redshift za Apache Spark kritična in učinkovita za analitiko in strojno učenje. Poleg tega razpravljamo o primerih uporabe, ki uporabljajo integracijo Amazon Redshift z Apache Spark za spodbujanje vpliva na poslovanje. Na koncu vas vodimo skozi primere po korakih, kako uporabiti ta uradni konektor AWS v aplikaciji Apache Spark.

Integracija Amazon Redshift za Apache Spark

Integracija Amazon Redshift za Apache Spark zmanjša okoren in pogosto ročni postopek nastavitve konektorja spark-redshift (različica skupnosti) in skrajša čas, potreben za pripravo na naloge analitike in ML. Določiti morate le povezavo do vašega podatkovnega skladišča in že v nekaj minutah lahko začnete delati s podatki Amazon Redshift iz svojih aplikacij, ki temeljijo na Apache Spark.

Uporabite lahko več zmožnosti potiskanja navzdol za operacije, kot so razvrščanje, združevanje, omejitev, združevanje in skalarne funkcije, tako da se samo ustrezni podatki premaknejo iz vašega podatkovnega skladišča Amazon Redshift v aplikacijo Apache Spark, ki uporablja. To vam omogoča izboljšanje delovanja vaših aplikacij. Skrbniki Amazon Redshift lahko zlahka prepoznajo SQL, ustvarjen iz aplikacij, ki temeljijo na Sparku. V tej objavi pokažemo, kako lahko ugotovite SQL, ki ga ustvari opravilo Apache Spark.

Poleg tega integracija Amazon Redshift za Apache Spark uporablja obliko zapisa datoteke Parquet pri uprizarjanju podatkov v začasni imenik. Amazon Redshift uporablja stavek UNLOAD SQL za shranjevanje teh začasnih podatkov Preprosta storitev shranjevanja Amazon (Amazon S3). Aplikacija Apache Spark pridobi rezultate iz začasnega imenika (shranjenega v formatu datoteke Parquet), kar izboljša zmogljivost.

Svoje aplikacije lahko naredite bolj varne tudi z uporabo AWS upravljanje identitete in dostopa (IAM) poverilnice za povezavo z Amazon Redshift.

Integracija Amazon Redshift za Apache Spark je zgrajena na konektorju spark-redshift (različica skupnosti) in ga izboljša za zmogljivost in varnost, kar vam pomaga doseči do 10-krat hitrejše delovanje aplikacij.

Primeri uporabe za integracijo Amazon Redshift z Apache Spark

Za naš primer uporabe želi vodstvo podjetja, ki temelji na izdelku, vedeti prodajo za vsak izdelek na več trgih. Ker prodaja podjetja dinamično niha, je za vodstvo postalo izziv slediti prodaji na več trgih. Vendar pa skupna prodaja upada in vodstvo podjetja želi ugotoviti, kateri trgi niso uspešni, da bi se lahko na te trge usmerili za promocijske akcije.

Za prodajo na več trgih so podatki o prodaji izdelkov, kot so naročila, transakcije in podatki o pošiljkah, na voljo na Amazon S3 v podatkovnem jezeru. Ekipa za podatkovno inženirstvo lahko uporabi Apache Spark z Amazon EMR ali AWS Glue za analizo teh podatkov v Amazon S3.

Podatki o inventarju so na voljo v Amazon Redshift. Podobno lahko skupina za podatkovno inženirstvo analizira te podatke z Apache Spark z uporabo Amazon EMR ali opravilom AWS Glue z uporabo integracije Amazon Redshift za Apache Spark za izvajanje združevanja in transformacij. Združen in preoblikovan nabor podatkov je mogoče shraniti nazaj v Amazon Redshift z integracijo Amazon Redshift za Apache Spark.

Uporaba porazdeljenega ogrodja, kot je Apache Spark, z integracijo Amazon Redshift za Apache Spark lahko zagotovi vidljivost v podatkovnem jezeru in podatkovnem skladišču za ustvarjanje vpogledov v prodajo. Ti vpogledi so lahko na voljo poslovnim deležnikom in vrsti poslovnih uporabnikov v Amazon Redshift, da lahko sprejemajo informirane odločitve za izvajanje ciljno usmerjenih promocij za tržne segmente z nizkimi prihodki.

Poleg tega lahko uporabimo integracijo Amazon Redshift z Apache Spark v naslednjih primerih uporabe:

  • Stranka Amazon EMR ali AWS Glue, ki izvaja opravila Apache Spark, želi pretvoriti podatke in jih zapisati v Amazon Redshift kot del njihovega cevovoda ETL
  • Stranka ML uporablja Apache Spark s SageMakerjem za inženiring funkcij za dostop in preoblikovanje podatkov v Amazon Redshift
  • Stranka Amazon EMR, AWS Glue ali SageMaker uporablja Apache Spark za interaktivno analizo podatkov s podatki o Amazon Redshift iz prenosnikov

Primeri integracije Amazon Redshift za Apache Spark v aplikaciji Apache Spark

V tej objavi prikazujemo korake za povezavo Amazon Redshift z Amazon EMR Amazonski elastični računalniški oblak (Amazon EC2), Amazon EMR brez strežnikain AWS Glue z uporabo skupnega skripta. V naslednji vzorčni kodi ustvarimo poročilo, ki prikazuje četrtletno prodajo za leto 2008. Da bi to naredili, združimo dve tabeli Amazon Redshift z uporabo Apache Spark DataFrame, zaženemo predikat potisni navzdol, združimo in razvrstimo podatke ter zapišemo transformirane podatke nazaj v Amazon Redshift. Skript uporablja PySpark

Skript uporablja Preverjanje pristnosti na osnovi IAM za Amazon Redshift. Vloge IAM, ki jih uporabljata Amazon EMR in AWS Glue, morajo imeti ustrezna dovoljenja za preverjanje pristnosti Amazon Redshift in dostop do vedra S3 za začasno shranjevanje podatkov.

Naslednji primer pravilnika dovoljuje vlogi IAM, da pokliče GetClusterCredentials operacije:

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

Naslednji primer pravilnika dovoljuje dostop do vedra S3 za začasno shranjevanje podatkov:

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

Celoten skript je naslednji:

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

Če nameravate uporabiti prejšnji skript v svojem okolju, se prepričajte, da ste zamenjali vrednosti za naslednje spremenljivke z ustreznimi vrednostmi za vaše okolje: jdbc_iam_url, temp_dirin aws_role.

V naslednjem razdelku se sprehodimo skozi korake za zagon tega skripta za združevanje vzorčnega nabora podatkov, ki je na voljo v Amazon Redshift.

Predpogoji

Preden začnemo, se prepričajte, da so izpolnjeni naslednji predpogoji:

Razmestite vire z uporabo AWS CloudFormation

Izvedite naslednje korake za uvedbo sklada CloudFormation:

  1. Prijavite se v Konzola za upravljanje AWS, nato zaženite sklad CloudFormation:
    BDB-2063-launch-cloudformation-stack

Lahko tudi prenesite predlogo CloudFormation ustvariti vire, omenjene v tej objavi, prek infrastrukture kot kode (IaC). Uporabite to predlogo, ko zaženete nov sklad CloudFormation.

  1. Za izbiro se pomaknite navzdol na dno strani Priznavam, da lahko AWS CloudFormation ustvari vire IAM pod Zmogljivosti, nato izberite Ustvari sklad.

Postopek ustvarjanja sklada traja 15–20 minut. Predloga CloudFormation ustvari naslednje vire:

    • Amazon VPC s potrebnimi podomrežji, usmerjevalnimi tabelami in prehodom NAT
    • Žlica S3 z imenom redshift-spark-databucket-xxxxxxx (upoštevajte, da je xxxxxxx naključni niz, da bo ime vedra edinstveno)
    • Gruča Amazon Redshift z vzorčnimi podatki, naloženimi v bazi podatkov dev in primarni uporabnik redshiftmasteruser. Za namen te objave v spletnem dnevniku redshiftmasteruser z upravnimi dovoljenji se uporablja. Vendar je priporočljivo, da v produkcijskem okolju uporabite uporabnika z natančno kontrolo dostopa.
    • Vloga IAM, ki se uporablja za Amazon Redshift z možnostjo zahtevanja začasnih poverilnic iz zbirke podatkov razvijalcev gruče Amazon Redshift
    • Amazon EMR Studio s potrebnimi vlogami IAM
    • Izdaja Amazon EMR različice 6.9.0 v gruči EC2 s potrebnimi vlogami IAM
    • Različica izdaje aplikacije Amazon EMR Serverless 6.9.0
    • Povezava AWS Glue in opravilo AWS Glue različica 4.0
    • A Jupyterjev zvezek za zagon z uporabo Amazon EMR Studio z uporabo Amazon EMR v gruči EC2
    • Skript PySpark za izvajanje z uporabo Amazon EMR Studio in Amazon EMR Serverless
  1. Ko je ustvarjanje sklada končano, izberite ime sklada redshift-spark in se pomaknite do Izhodi

Te izhodne vrednosti uporabimo kasneje v tej objavi.

V naslednjih razdelkih prikazujemo korake za integracijo Amazon Redshift za Apache Spark iz Amazon EMR na Amazon EC2, Amazon EMR Serverless in AWS Glue.

Uporabite integracijo Amazon Redshift z Apache Spark na Amazon EMR na EC2

Od različice izdaje Amazon EMR 6.9.0 naprej sta konektor, ki uporablja integracijo Amazon Redshift za Apache Spark in gonilnik Amazon Redshift JDBC, na voljo lokalno na Amazon EMR. Te datoteke se nahajajo pod /usr/share/aws/redshift/ imenik. Vendar pa je v prejšnjih različicah Amazon EMR skupnost različica spark-redshift priključek je na voljo.

Naslednji primer prikazuje, kako povezati Amazon Redshift z jedrom PySpark prek Amazon EMR Studio zvezek. Sklad CloudFormation je ustvaril Amazon EMR Studio, Amazon EMR v gruči EC2 in prenosni računalnik Jupyter, ki je na voljo za izvajanje. Če želite iti skozi ta primer, dokončajte naslednje korake:

  1. Prenesite prenosni računalnik Jupyter, ki je na voljo v vedru S3:
    • V izhodih sklada CloudFormation poiščite vrednost za EMRStudioNotebook, ki naj kaže na redshift-spark-emr.ipynb prenosni računalnik, ki je na voljo v vedru S3.
    • Izberite povezavo ali odprite povezavo v novem zavihku, tako da kopirate URL za zvezek.
    • Ko odprete povezavo, prenesite zvezek tako, da izberete Prenos, ki bo datoteko shranil lokalno v vaš računalnik.
  1. Do Amazon EMR Studio dostopajte tako, da izberete ali kopirate povezavo v izhodih sklada CloudFormation za ključ EMRStudioURL.
  2. V podoknu za krmarjenje izberite Delovni prostori.
  3. Izberite Ustvari delovni prostor.
  4. Vnesite ime na primer za delovni prostor redshift-spark.
  5. Razširi Napredna konfiguracija izberite in izberite Priključite delovni prostor gruči EMR.
  6. Pod Povežite se z gručo EMR, izberite gručo EMR z imenom emrCluster-Redshift-Spark.
  7. Izberite Ustvari delovni prostor.
  8. Ko je delovni prostor Amazon EMR Studio ustvarjen in v statusu Attached, lahko dostopate do delovnega prostora tako, da izberete ime delovnega prostora.

To bi moralo odpreti delovni prostor v novem zavihku. Če imate preprečevalnik pojavnih oken, boste morda morali dovoliti delovnemu prostoru, da odpre ali onemogočiti preprečevalnik pojavnih oken.

V Amazon EMR Studio Workspace zdaj naložimo prenosni računalnik Jupyter, ki smo ga prenesli prej.

  1. Izberite Pošiljanje za brskanje po lokalnem datotečnem sistemu in nalaganje Jupyterjevega zvezka (redshift-spark-emr.ipynb).
  2. Izberite (dvokliknite) na redshift-spark-emr.ipynb zvezek v delovnem prostoru, da odprete zvezek.

Beležnica vsebuje podrobnosti o različnih nalogah, ki jih izvaja. Upoštevajte, da v razdelku Določite spremenljivke za povezavo z gručo Amazon Redshift, vam ni treba posodobiti vrednosti za jdbc_iam_url, temp_dirin aws_role ker jih za vas posodobi AWS CloudFormation. AWS CloudFormation je prav tako izvedel korake, omenjene v Predpogoji odsek zvezka.

Zdaj lahko začnete uporabljati prenosni računalnik.

  1. Zaženite posamezne celice tako, da jih izberete in nato izberete Predvajaj.

Uporabite lahko tudi kombinacijo tipk Shift + Enter or Shift+Return. Lahko pa zaženete vse celice z izbiro Zaženi vse celice o Run meni.

  1. Poiščite predikatno operacijo potisnega navzdol, ki jo v gruči Amazon Redshift izvaja integracija Amazon Redshift za Apache Spark.

Vidimo lahko tudi začasne podatke, shranjene na Amazon S3 v optimiziranem formatu Parquet. Rezultat je viden pri izvajanju celice v odseku Pridobite zadnjo izvedeno poizvedbo na Amazon Redshift.

  1. Če želite potrditi tabelo, ki jo je ustvarilo opravilo Amazon EMR na Amazon EC2, se pomaknite do konzole Amazon Redshift in izberite gručo redshift-spark-redshift-cluster o Omogočena nadzorna plošča gruč stran.
  2. V podrobnostih grozda, na Podatki poizvedbe izberite meni Poizvedba v urejevalniku poizvedb v2.
  3. Izberite gručo v navigacijskem podoknu in se povežite z gručo Amazon Redshift, ko ta zahteva preverjanje pristnosti.
  4. Izberite Začasne poverilnice.
  5. za Baze podatkov, vnesite dev.
  6. za uporabniško ime, vnesite redshiftmasteruser.
  7. Izberite Shrani.
  8. V podoknu za krmarjenje razširite gručo redshift-spark-redshift-cluster, razširi bazo podatkov razvijalcev, razširi tickit, in razširite Mize za seznam vseh tabel znotraj sheme tickit.

Moral bi najti mizo test_emr.

  1. Izberite (desni klik) tabelo test_emr, nato izberite Izberite tabelo za poizvedbo po tabeli.
  2. Izberite Run za zagon stavka SQL.

Uporabite integracijo Amazon Redshift z Apache Spark na Amazon EMR Serverless

Izdaja Amazon EMR različice 6.9.0 in novejša omogoča integracijo Amazon Redshift za Apache Spark JAR (ki jih upravlja Amazon Redshift) in Amazon Redshift JDBC JAR tudi lokalno na Amazon EMR Serverless. Te datoteke se nahajajo pod /usr/share/aws/redshift/ imenik. V naslednjem primeru uporabljamo skript Python, ki je na voljo v vedru S3 s skladom CloudFormation, ki smo ga ustvarili prej.

  1. V izhodih sklada CloudFormation si zabeležite vrednost za EMRServerlessExecutionScript, ki je lokacija skripta Python v vedru S3.
  2. Upoštevajte tudi vrednost za EMRServerlessJobExecutionRole, ki je vloga IAM, ki se uporablja pri izvajanju opravila Amazon EMR Serverless.
  3. Do Amazon EMR Studio dostopajte tako, da izberete ali kopirate povezavo v izhodih sklada CloudFormation za ključ EMRStudioURL.
  4. Izberite Aplikacije pod Brez strežnika v podoknu za krmarjenje.

Našli boste aplikacijo EMR, ki jo je ustvaril sklad CloudFormation z imenom emr-spark-redshift.

  1. Izberite ime prijave za oddajo delovnega mesta.
  2. Izberite Oddajte delo.
  3. Pod Podrobnosti o delovnem mestuZa Ime, vnesite prepoznavno ime za opravilo.
  4. za Vloga med izvajanjem, izberite vlogo IAM, ki ste jo prej zapisali v izhodu sklada CloudFormation.
  5. za Lokacija skripta, podajte pot do skripta Python, ki ste ga prej zabeležili iz izhoda sklada CloudFormation.
  6. Razširite razdelek Lastnosti iskre In izberite Uredi v besedilu
  7. V besedilno polje vnesite naslednjo vrednost, ki ponuja pot do redshift-connector, gonilnik Amazon Redshift JDBC, spark-avro JAR in minimal-json Datoteke 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. Izberite Oddajte delo.
  9. Počakajte, da se opravilo zaključi in se prikaže status izvajanja Uspeh.
  10. Pomaknite se do urejevalnika poizvedb Amazon Redshift in si oglejte, ali je bila tabela uspešno ustvarjena.
  11. Preverite poizvedbe navzdol za skupino poizvedb Amazon Redshift emr-serverless-redshift. Za bazo podatkov lahko zaženete naslednji stavek SQL dev:
    SELECT query_text FROM SYS_QUERY_HISTORY WHERE query_label = 'emr-serverless-redshift' ORDER BY start_time DESC LIMIT 1

Vidite lahko, da so potisna poizvedba in vrnjeni rezultati shranjeni v formatu datoteke Parquet na Amazon S3.

Uporabite integracijo Amazon Redshift z Apache Spark na AWS Glue

Od različice AWS Glue 4.0 naprej lahko opravila Apache Spark, ki se povezujejo z Amazon Redshift, uporabljajo integracijo Amazon Redshift za Apache Spark in gonilnik JDBC Amazon Redshift. Obstoječa opravila AWS Glue, ki že uporabljajo Amazon Redshift kot vir ali cilj, je mogoče nadgraditi na AWS Glue 4.0, da izkoristite prednosti tega novega priključka. Predloga CloudFormation, ki je priložena tej objavi, ustvari naslednje vire AWS Glue:

  • AWS Glue povezava za Amazon Redshift – Povezava za vzpostavitev povezave med AWS Glue in Amazon Redshift z integracijo Amazon Redshift za Apache Spark
  • Vloga IAM, povezana z opravilom AWS Glue – Vloga IAM za upravljanje dovoljenj za izvajanje opravila AWS Glue
  • Opravilo lepila AWS – Skript za opravilo AWS Glue, ki izvaja transformacije in združevanja z integracijo Amazon Redshift za Apache Spark

Naslednji primer uporablja povezavo AWS Glue, pritrjeno na opravilo AWS Glue s PySpark, in vključuje naslednje korake:

  1. Na konzoli AWS Glue izberite povezave v podoknu za krmarjenje.
  2. Pod povezave, izberite povezavo AWS Glue za Amazon Redshift, ustvarjeno s predlogo CloudFormation.
  3. Preverite podrobnosti povezave.

Zdaj lahko znova uporabite to povezavo znotraj opravila ali med več opravili.

  1. o Priključki izberite opravilo AWS Glue, ki ga je ustvaril sklad CloudFormation pod Vaša delovna mestaali dostopite do opravila AWS Glue z uporabo URL-ja, ki je na voljo za ključ GlueJob v izhodu sklada CloudFormation.
  2. Dostopite in preverite skript za opravilo AWS Glue.
  3. o Podrobnosti o delovnem mestu zavihek, se prepričajte, da Različica z lepilom nastavljena na Lepilo 4.0.

To zagotavlja, da delo uporablja najnovejše redshift-spark konektor.

  1. Razširi Napredne lastnosti in povezave preverite, ali je povezava, ki jo je ustvaril sklad CloudFormation, priključena.
  2. Preverite parametre opravila, dodane za opravilo AWS Glue. Te vrednosti so na voljo tudi v izhodu za sklad CloudFormation.
  3. Izberite Shrani in nato Run.

Stanje izvajanja opravila si lahko ogledate na Run tab.

  1. Ko se opravilo uspešno zaključi, lahko preverite izhod tabele test-glue, ustvarjene z opravilom AWS Glue.
  2. Preverjamo izvajanje potisnih poizvedb za skupino poizvedb Amazon Redshift glue-redshift. Za bazo podatkov lahko zaženete naslednji stavek SQL dev:
    SELECT query_text FROM SYS_QUERY_HISTORY WHERE query_label = 'glue-redshift' ORDER BY start_time DESC LIMIT 1

Najboljše prakse

Upoštevajte naslednje najboljše prakse:

  • Razmislite o uporabi integracije Amazon Redshift za Apache Spark iz Amazon EMR namesto uporabe redshift-spark priključek (različica skupnosti) za vaša nova opravila Apache Spark.
  • Če imate obstoječa opravila Apache Spark, ki uporabljajo redshift-spark priključek (različica skupnosti), razmislite o njihovi nadgradnji za uporabo integracije Amazon Redshift za Apache Spark
  • Integracija Amazon Redshift za Apache Spark samodejno uporabi predikat in potisni poizvedbe za optimizacijo delovanja. Priporočamo uporabo podprtih funkcij (autopushdown) v vaši poizvedbi. Integracija Amazon Redshift za Apache Spark bo funkcijo spremenila v poizvedbo SQL in zagnala poizvedbo v Amazon Redshift. Rezultat te optimizacije je pridobivanje zahtevanih podatkov, tako da lahko Apache Spark obdela manj podatkov in ima boljšo zmogljivost.
    • Razmislite o uporabi agregatnih potisnih funkcij, kot je avg, count, max, minin sum za pridobivanje filtriranih podatkov za obdelavo podatkov.
    • Razmislite o uporabi logičnih potisnih operatorjev, kot je in, isnull, isnotnull, contains, endswithin startswith za pridobivanje filtriranih podatkov za obdelavo podatkov.
    • Razmislite o uporabi logičnih potisnih operatorjev, kot je and, orin not (ali !) za pridobitev filtriranih podatkov za obdelavo podatkov.
  • Priporočljivo je, da vlogo IAM posredujete s parametrom aws_iam_role za preverjanje pristnosti Amazon Redshift iz vaše aplikacije Apache Spark na Amazon EMR ali AWS Glue. Vloga IAM mora imeti potrebna dovoljenja za pridobivanje začasnih poverilnic IAM za preverjanje pristnosti v Amazon Redshift, kot je prikazano v razdelku »Primeri za integracijo Amazon Redshift za Apache Spark v aplikaciji Apache Spark« tega bloga.
  • S to funkcijo vam ni treba vzdrževati uporabniškega imena in gesla za Amazon Redshift v upravitelju skrivnosti in bazi podatkov Amazon Redshift.
  • Amazon Redshift uporablja stavek UNLOAD SQL za shranjevanje teh začasnih podatkov na Amazon S3. Aplikacija Apache Spark pridobi rezultate iz začasnega imenika (shranjenega v formatu datoteke Parquet). Ta začasni imenik na Amazon S3 se ne očisti samodejno in bi zato lahko povzročil dodatne stroške. Priporočamo uporabo Politike življenjskega cikla Amazon S3 da definirate pravila hrambe za vedro S3.
  • Priporočljivo je vklopiti Revizijsko beleženje Amazon Redshift za beleženje informacij o povezavah in dejavnostih uporabnikov v vaši bazi podatkov.
  • Priporočljivo je vklopiti Šifriranje Amazon Redshift v mirovanju za šifriranje vaših podatkov, ko jih Amazon Redshift zapisuje v svoje podatkovne centre, in jih dešifrira namesto vas, ko dostopate do njih.
  • Priporočljivo je, da nadgradite na AWS Glue v4.0 in novejšo različico, če želite uporabiti integracijo Amazon Redshift za Apache Spark, ki je na voljo takoj. Z nadgradnjo na to različico AWS Glue bo ta funkcija samodejno uporabljena.
  • Priporočljivo je, da nadgradite na Amazon EMR v6.9.0 in novejšo različico, če želite uporabiti integracijo Amazon Redshift za Apache Spark. Ni vam treba izrecno upravljati nobenih gonilnikov ali datotek JAR.
  • Razmislite o uporabi prenosnih računalnikov Amazon EMR Studio za interakcijo s podatki Amazon Redshift v vaši aplikaciji Apache Spark.
  • Razmislite o uporabi AWS Glue Studio za ustvarjanje opravil Apache Spark z uporabo vizualnega vmesnika. Prav tako lahko preklopite na pisanje kode Apache Spark v Scala ali PySpark znotraj AWS Glue Studio.

Čiščenje

Izvedite naslednje korake za čiščenje virov, ki so ustvarjeni kot del predloge CloudFormation, da zagotovite, da vam virov ne bomo zaračunali, če jih ne boste več uporabljali:

  1. Ustavite aplikacijo Amazon EMR Serverless:
    • Do Amazon EMR Studio dostopajte tako, da izberete ali kopirate povezavo v izhodih sklada CloudFormation za ključ EMRStudioURL.
    • Izberite Aplikacije pod Brez strežnika v podoknu za krmarjenje.

Našli boste aplikacijo EMR, ki jo je ustvaril sklad CloudFormation z imenom emr-spark-redshift.

    • Če je stanje aplikacije ustavljeno, se lahko premaknete na naslednje korake. Če pa je status aplikacije Začetek, izberite ime aplikacije in nato izberite Ustavi aplikacijo in Ustavi aplikacijo ponovno potrditi.
  1. Izbrišite delovni prostor Amazon EMR Studio:
    • Do Amazon EMR Studio dostopajte tako, da izberete ali kopirate povezavo v izhodih sklada CloudFormation za ključ EMRStudioURL.
    • Izberite Delovni prostori v podoknu za krmarjenje.
    • Izberite delovni prostor, ki ste ga ustvarili, in izberite Brisanje, nato izberite Brisanje ponovno potrditi.
  2. Izbrišite sklad CloudFormation:
    • Na konzoli AWS CloudFormation se pomaknite do sklada, ki ste ga ustvarili prej.
    • Izberite ime sklada in nato izberite Brisanje da odstranite sklad in izbrišete vire, ustvarjene kot del te objave.
    • Na potrditvenem zaslonu izberite Izbriši sklad.

zaključek

V tej objavi smo razložili, kako lahko uporabite integracijo Amazon Redshift za Apache Spark za gradnjo in uvajanje aplikacij z Amazon EMR na Amazon EC2, Amazon EMR Serverless in AWS Glue za samodejno uporabo predikata in potisne poizvedbe za optimizacijo zmogljivosti poizvedbe za podatke v Amazon Redshift. Zelo priporočljivo je, da uporabite integracijo Amazon Redshift za Apache Spark za brezhibno in varno povezavo z Amazon Redshift iz vašega Amazon EMR ali AWS Glue.

Tukaj je nekaj naših strank o integraciji Amazon Redshift za Apache Spark:

»Našim inženirjem omogočamo izgradnjo njihovih podatkovnih cevovodov in aplikacij z Apache Spark z uporabo Pythona in Scale. Želeli smo prilagojeno rešitev, ki je poenostavila delovanje ter bila hitrejša in učinkovitejša za naše stranke, in to je tisto, kar smo dobili z novo integracijo Amazon Redshift za Apache Spark.«

—Huron Consulting

»GE Aerospace uporablja analitiko AWS in Amazon Redshift za omogočanje kritičnih poslovnih vpogledov, ki spodbujajo pomembne poslovne odločitve. S podporo za samodejno kopiranje iz Amazon S3 lahko zgradimo enostavnejše podatkovne cevovode za premikanje podatkov iz Amazon S3 v Amazon Redshift. To pospešuje zmožnost naših skupin za podatkovne izdelke za dostop do podatkov in zagotavljanje vpogledov končnim uporabnikom. Več časa porabimo za dodajanje vrednosti s podatki in manj časa za integracije.«

—GE Aerospace

»Naš poudarek je na zagotavljanju samopostrežnega dostopa do podatkov za vse naše uporabnike pri Goldman Sachsu. Preko Legende, naše odprtokodne platforme za upravljanje in upravljanje podatkov, uporabnikom omogočamo razvoj aplikacij, osredotočenih na podatke, in pridobivanje vpogledov, ki temeljijo na podatkih, ko sodelujemo v industriji finančnih storitev. Z integracijo Amazon Redshift za Apache Spark bo naša skupina za podatkovno platformo lahko dostopala do podatkov Amazon Redshift z minimalnimi ročnimi koraki, kar bo omogočilo ETL z ničelno kodo, kar bo povečalo našo zmožnost, da se inženirji lažje osredotočijo na izpopolnjevanje svojega poteka dela kot zbirajo popolne in pravočasne informacije. Pričakujemo izboljšanje zmogljivosti aplikacij in izboljšano varnost, saj lahko naši uporabniki zdaj preprosto dostopajo do najnovejših podatkov v Amazon Redshift.”

— Goldman Sachs


O avtorjih

Gagan Brahmi je višji specialist za rešitve, osredotočen na analitiko velikih podatkov in platformo AI/ML pri Amazon Web Services. Gagan ima več kot 18 let izkušenj na področju informacijske tehnologije. Strankam pomaga pri arhitekturi in izgradnji visoko razširljivih, zmogljivih in varnih rešitev v oblaku na AWS. V prostem času preživlja čas z družino in raziskuje nove kraje.

Vivek Gautam je podatkovni arhitekt s specializacijo za podatkovna jezera pri AWS Professional Services. Sodeluje s podjetniškimi strankami, ki gradijo podatkovne izdelke, analitične platforme in rešitve na AWS. Ko ne gradi in ne načrtuje podatkovnih jezer, je Vivek navdušenec nad hrano, ki tudi rad raziskuje nove popotniške destinacije in hodi na pohode.

Naresh Gautam je vodja analitike podatkov in AI/ML pri AWS z 20-letnimi izkušnjami, ki strankam z veseljem pomaga oblikovati visoko razpoložljive, visoko zmogljive in stroškovno učinkovite rešitve podatkovne analitike in AI/ML, da bi strankam omogočili odločanje na podlagi podatkov . V prostem času se ukvarja z meditacijo in kuhanjem.

Beaux Sharifi je inženir za razvoj programske opreme v skupini voznikov Amazon Redshift, kjer vodi razvoj integracije Amazon Redshift s priključkom Apache Spark. Ima več kot 20 let izkušenj z gradnjo podatkovno vodenih platform v različnih panogah. V prostem času se rad druži z družino in deska.

Časovni žig:

Več od Veliki podatki AWS