Vereenvoudig en versnel Apache Spark-applicaties op Amazon Redshift-gegevens met Amazon Redshift-integratie voor Apache Spark

Vereenvoudig en versnel Apache Spark-applicaties op Amazon Redshift-gegevens met Amazon Redshift-integratie voor Apache Spark

Bronknooppunt: 2597866

Klanten gebruiken Amazon roodverschuiving om hun bedrijfskritische analyses uit te voeren op petabytes aan gestructureerde en semi-gestructureerde gegevens. Apache Spark is een populair framework dat u kunt gebruiken om toepassingen te bouwen voor gebruiksscenario's zoals ETL (extraheren, transformeren en laden), interactieve analyse en machine learning (ML). Met Apache Spark kun je applicaties bouwen in verschillende talen, zoals Java, Scala en Python, door toegang te krijgen tot de gegevens in je Amazon Redshift-datawarehouse.

Amazon Redshift-integratie voor Apache Spark helpt ontwikkelaars naadloos Apache Spark-applicaties te bouwen en uit te voeren op Amazon Redshift-gegevens. Ontwikkelaars kunnen AWS-analyses en ML-services gebruiken, zoals Amazon EMR, AWS lijm en Amazon Sage Maker om moeiteloos Apache Spark-applicaties te bouwen die lezen van en schrijven naar hun Amazon Redshift-datawarehouse. U kunt dit doen zonder afbreuk te doen aan de prestaties van uw applicaties of de transactionele consistentie van uw gegevens.

In dit bericht bespreken we waarom Amazon Redshift-integratie voor Apache Spark cruciaal en efficiënt is voor analyse en ML. Daarnaast bespreken we use cases die gebruikmaken van Amazon Redshift-integratie met Apache Spark om de zakelijke impact te vergroten. Ten slotte laten we u stapsgewijze voorbeelden zien van het gebruik van deze officiële AWS-connector in een Apache Spark-toepassing.

Amazon Redshift-integratie voor Apache Spark

De Amazon Redshift-integratie voor Apache Spark minimaliseert het omslachtige en vaak handmatige proces van het opzetten van een spark-redshift-connector (community-versie) en verkort de tijd die nodig is om analyse- en ML-taken voor te bereiden. U hoeft alleen de verbinding met uw datawarehouse op te geven en u kunt binnen enkele minuten aan de slag met Amazon Redshift-gegevens vanuit uw op Apache Spark gebaseerde applicaties.

U kunt verschillende pushdown-mogelijkheden gebruiken voor bewerkingen zoals sorteren, aggregeren, beperken, samenvoegen en scalaire functies, zodat alleen de relevante gegevens worden verplaatst van uw Amazon Redshift-datawarehouse naar de consumerende Apache Spark-toepassing. Hiermee kunt u de prestaties van uw applicaties verbeteren. Amazon Redshift-beheerders kunnen eenvoudig de SQL identificeren die is gegenereerd door op Spark gebaseerde applicaties. In dit bericht laten we zien hoe u de SQL kunt achterhalen die is gegenereerd door de Apache Spark-taak.

Bovendien gebruikt Amazon Redshift-integratie voor Apache Spark het Parquet-bestandsformaat wanneer de gegevens in een tijdelijke map worden geënsceneerd. Amazon Redshift gebruikt de UNLOAD SQL-instructie om deze tijdelijke gegevens op te slaan Amazon eenvoudige opslagservice (Amazone S3). De Apache Spark-toepassing haalt de resultaten op uit de tijdelijke map (opgeslagen in de bestandsindeling Parquet), wat de prestaties verbetert.

U kunt ook helpen uw toepassingen veiliger te maken door gebruik te maken van AWS Identiteits- en toegangsbeheer (IAM) inloggegevens om verbinding te maken met Amazon Redshift.

Amazon Redshift-integratie voor Apache Spark is gebouwd bovenop de spark-redshift-connector (community-versie) en verbetert het voor prestaties en beveiliging, waardoor u tot 10 keer snellere applicatieprestaties kunt behalen.

Use cases voor Amazon Redshift-integratie met Apache Spark

Voor onze use case wil de leiding van het productgebaseerde bedrijf de verkopen voor elk product op meerdere markten kennen. Aangezien de verkoop voor het bedrijf dynamisch fluctueert, is het een uitdaging geworden voor het leiderschap om de verkoop over meerdere markten te volgen. De totale omzet loopt echter terug en de bedrijfsleiding wil weten welke markten niet presteren, zodat ze zich op deze markten kunnen richten voor promotiecampagnes.

Voor verkoop op meerdere markten zijn de productverkoopgegevens zoals bestellingen, transacties en verzendgegevens beschikbaar op Amazon S3 in het datameer. Het data-engineeringteam kan Apache Spark met Amazon EMR of AWS Glue gebruiken om deze gegevens in Amazon S3 te analyseren.

De inventarisgegevens zijn beschikbaar in Amazon Redshift. Evenzo kan het data-engineeringteam deze gegevens analyseren met Apache Spark met behulp van Amazon EMR of een AWS Glue-taak door de Amazon Redshift-integratie voor Apache Spark te gebruiken om aggregaties en transformaties uit te voeren. De geaggregeerde en getransformeerde dataset kan weer worden opgeslagen in Amazon Redshift met behulp van de Amazon Redshift-integratie voor Apache Spark.

Het gebruik van een gedistribueerd raamwerk zoals Apache Spark met de Amazon Redshift-integratie voor Apache Spark kan inzicht bieden in het datameer en het datawarehouse om verkoopinzichten te genereren. Deze inzichten kunnen beschikbaar worden gesteld aan de zakelijke belanghebbenden en zakelijke gebruikers in Amazon Redshift om weloverwogen beslissingen te nemen om gerichte promoties uit te voeren voor de marktsegmenten met lage inkomsten.

Bovendien kunnen we de Amazon Redshift-integratie met Apache Spark gebruiken in de volgende gebruiksscenario's:

  • Een Amazon EMR- of AWS Glue-klant die Apache Spark-taken uitvoert, wil gegevens transformeren en naar Amazon Redshift schrijven als onderdeel van hun ETL-pijplijn
  • Een ML-klant gebruikt Apache Spark met SageMaker voor feature-engineering voor toegang tot en transformatie van gegevens in Amazon Redshift
  • Een klant van Amazon EMR, AWS Glue of SageMaker gebruikt Apache Spark voor interactieve data-analyse met data op Amazon Redshift van notebooks

Voorbeelden van Amazon Redshift-integratie voor Apache Spark in een Apache Spark-toepassing

In dit bericht laten we de stappen zien om Amazon Redshift vanaf Amazon EMR aan te sluiten Amazon Elastic Compute-cloud (Amazone EC2), Amazon EMR Serverloos, en AWS Glue met behulp van een gemeenschappelijk script. In de volgende voorbeeldcode genereren we een rapport met de kwartaalomzet voor het jaar 2008. Om dat te doen voegen we twee Amazon Redshift-tabellen samen met behulp van een Apache Spark DataFrame, voeren we een predikaatpushdown uit, aggregeren en sorteren we de gegevens, en schrijven we de getransformeerde gegevens terug naar Amazon Redshift. Het script maakt gebruik van PySpark

Het script gebruikt IAM-gebaseerde authenticatie voor Amazon Redshift. IAM-rollen die worden gebruikt door Amazon EMR en AWS Glue moeten de juiste machtigingen hebben om Amazon Redshift te verifiëren, en toegang tot een S3-bucket voor tijdelijke gegevensopslag.

Met het volgende voorbeeldbeleid kan de IAM-rol de GetClusterCredentials activiteiten:

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

Het volgende voorbeeldbeleid geeft toegang tot een S3-bucket voor tijdelijke gegevensopslag:

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

Het volledige script is als volgt:

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

Als u van plan bent het voorgaande script in uw omgeving te gebruiken, zorg er dan voor dat u de waarden voor de volgende variabelen vervangt door de juiste waarden voor uw omgeving: jdbc_iam_url, temp_dir en aws_role.

In het volgende gedeelte doorlopen we de stappen om dit script uit te voeren om een ​​voorbeeldgegevensset samen te voegen die beschikbaar is in Amazon Redshift.

Voorwaarden

Controleer voordat we beginnen of aan de volgende voorwaarden is voldaan:

Resources implementeren met AWS CloudFormation

Voer de volgende stappen uit om de CloudFormation-stack te implementeren:

  1. Log in op AWS-beheerconsoleen start vervolgens de CloudFormation-stack:
    BDB-2063-lancering-cloudformation-stack

Ook download het CloudFormation-sjabloon om de in dit bericht genoemde bronnen te creëren via infrastructuur als code (IaC). Gebruik deze sjabloon bij het starten van een nieuwe CloudFormation-stack.

  1. Scrol omlaag naar de onderkant van de pagina om te selecteren Ik erken dat AWS CloudFormation IAM-bronnen kan creëren voor Mogelijkheden, kies dan Maak een stapel.

Het maken van een stapel duurt 15-20 minuten. De CloudFormation-sjabloon maakt de volgende bronnen:

    • Een Amazon VPC met de benodigde subnetten, routetabellen en NAT-gateway
    • Een S3 emmer met de naam redshift-spark-databucket-xxxxxxx (merk op dat xxxxxxx een willekeurige tekenreeks is om de naam van de bucket uniek te maken)
    • Een Amazon Redshift-cluster met voorbeeldgegevens die in de database zijn geladen dev en de hoofdgebruiker redshiftmasteruser. Voor het doel van deze blogpost, redshiftmasteruser met beheerdersrechten wordt gebruikt. Het wordt echter aanbevolen om een ​​gebruiker te gebruiken met fijnmazige toegangscontrole in een productieomgeving.
    • Een IAM-rol die moet worden gebruikt voor Amazon Redshift met de mogelijkheid om tijdelijke inloggegevens op te vragen bij de dev-database van het Amazon Redshift-cluster
    • Amazon EMR-studio met de benodigde IAM-rollen
    • Amazon EMR geeft versie 6.9.0 vrij op een EC2-cluster met de benodigde IAM-rollen
    • Een Amazon EMR Serverless applicatie versie 6.9.0
    • Een AWS Glue-verbinding en AWS Glue-taak versie 4.0
    • A Jupyter notitieboek om te draaien met Amazon EMR Studio met behulp van Amazon EMR op een EC2-cluster
    • Een PySpark-script om uit te voeren met Amazon EMR Studio en Amazon EMR Serverless
  1. Nadat het maken van de stapel is voltooid, kiest u de naam van de stapel redshift-spark en navigeer naar de Uitgangen

We gebruiken deze uitvoerwaarden later in dit bericht.

In de volgende secties laten we de stappen zien voor Amazon Redshift-integratie voor Apache Spark van Amazon EMR op Amazon EC2, Amazon EMR Serverless en AWS Glue.

Gebruik Amazon Redshift-integratie met Apache Spark op Amazon EMR op EC2

Vanaf Amazon EMR-releaseversie 6.9.0 en hoger zijn de connector die Amazon Redshift-integratie voor Apache Spark en Amazon Redshift JDBC-driver gebruikt, lokaal beschikbaar op Amazon EMR. Deze bestanden bevinden zich onder de /usr/share/aws/redshift/ map. Echter, in de vorige versies van Amazon EMR, de gemeenschap versie van de spark-redshift connector beschikbaar is.

Het volgende voorbeeld laat zien hoe u Amazon Redshift kunt verbinden met een PySpark-kernel via een Amazon EMR-studio notitieboekje. De CloudFormation-stack creëerde Amazon EMR Studio, Amazon EMR op een EC2-cluster en een Jupyter-notebook beschikbaar om te gebruiken. Voer de volgende stappen uit om dit voorbeeld te doorlopen:

  1. Download de Jupyter-notebook die beschikbaar is in de S3-bucket voor u:
    • Zoek in de CloudFormation-stackuitvoer naar de waarde voor EMRStudioNotebook, die zou moeten wijzen op de redshift-spark-emr.ipynb notebook beschikbaar in de S3-emmer.
    • Kies de link of open de link in een nieuw tabblad door de URL voor het notitieboek te kopiëren.
    • Nadat u de link hebt geopend, downloadt u het notitieblok door te kiezen Downloaden, waarmee het bestand lokaal op uw computer wordt opgeslagen.
  1. Toegang tot Amazon EMR Studio door de koppeling in de CloudFormation-stackuitvoer voor de sleutel te kiezen of te kopiëren EMRStudioURL.
  2. Kies in het navigatievenster workspaces.
  3. Kies Werkruimte maken.
  4. Geef bijvoorbeeld een naam op voor de werkruimte redshift-spark.
  5. Vouw de Geavanceerde configuratie sectie en selecteer Koppel Workspace aan een EMR-cluster.
  6. Onder Maak verbinding met een EMR-cluster, kies het EPD-cluster met de naam emrCluster-Redshift-Spark.
  7. Kies Werkruimte maken.
  8. Nadat de Amazon EMR Studio-werkruimte is gemaakt en de status Gekoppeld heeft, kunt u de werkruimte openen door de naam van de werkruimte te kiezen.

Dit zou de werkruimte op een nieuw tabblad moeten openen. Houd er rekening mee dat als u een pop-upblokkering heeft, u mogelijk moet toestaan ​​dat de werkruimte de pop-upblokkering opent of uitschakelt.

In de Amazon EMR Studio Workspace uploaden we nu de Jupyter-notebook die we eerder hebben gedownload.

  1. Kies Uploaden om door uw lokale bestandssysteem te bladeren en de Jupyter-notebook te uploaden (redshift-spark-emr.ipynb).
  2. Kies (dubbelklik) de redshift-spark-emr.ipynb notebook in de werkruimte om de notebook te openen.

De notebook biedt de details van verschillende taken die worden uitgevoerd. Merk op dat in de sectie Definieer de variabelen om verbinding te maken met het Amazon Redshift-cluster, hoeft u de waarden voor niet bij te werken jdbc_iam_url, temp_dir en aws_role omdat deze voor u worden bijgewerkt door AWS CloudFormation. AWS CloudFormation heeft ook de stappen uitgevoerd die worden genoemd in de Voorwaarden sectie van het notitieboekje.

U kunt nu beginnen met het uitvoeren van de notebook.

  1. Voer de afzonderlijke cellen uit door ze te selecteren en vervolgens te kiezen Spelen.

U kunt ook de toetsencombinatie van gebruiken Shift + Enter or Verschuiving+Terug. U kunt ook alle cellen uitvoeren door te kiezen Voer alle cellen uit op de lopen menu.

  1. Zoek de predikaat-pushdown-bewerking die wordt uitgevoerd op het Amazon Redshift-cluster door de Amazon Redshift-integratie voor Apache Spark.

We kunnen ook de tijdelijke gegevens zien die zijn opgeslagen op Amazon S3 in het geoptimaliseerde Parquet-formaat. De uitvoer kan worden gezien door de cel in de sectie uit te voeren Haal de laatste zoekopdracht op die is uitgevoerd op Amazon Redshift.

  1. Om de tabel te valideren die door de taak van Amazon EMR op Amazon EC2 is gemaakt, navigeert u naar de Amazon Redshift-console en kiest u het cluster redshift-spark-redshift-cluster op de Dashboard voor ingerichte clusters pagina.
  2. In de clusterdetails, op de Gegevens opvragen menu, kies Query in query-editor v2.
  3. Kies het cluster in het navigatievenster en maak verbinding met het Amazon Redshift-cluster wanneer het om authenticatie vraagt.
  4. kies Tijdelijke inloggegevens.
  5. Voor Database, ga naar binnen dev.
  6. Voor gebruikersnaam, ga naar binnen redshiftmasteruser.
  7. Kies Bespaar.
  8. Vouw het cluster uit in het navigatievenster redshift-spark-redshift-cluster, breid de dev-database uit, vouw uit tickit, en uitbreiden Tafels om alle tabellen in het schema weer te geven tickit.

Je zou de tafel moeten vinden test_emr.

  1. Kies (klik met de rechtermuisknop) de tabel test_emr, kies dan Selecteer tafel om de tabel op te vragen.
  2. Kies lopen om de SQL-instructie uit te voeren.

Gebruik Amazon Redshift-integratie met Apache Spark op Amazon EMR Serverless

De Amazon EMR release versie 6.9.0 en hoger biedt de Amazon Redshift-integratie voor Apache Spark JAR's (beheerd door Amazon Redshift) en Amazon Redshift JDBC JAR's ook lokaal op Amazon EMR Serverless. Deze bestanden bevinden zich onder de /usr/share/aws/redshift/ map. In het volgende voorbeeld gebruiken we het Python-script dat beschikbaar is gemaakt in de S3-bucket door de CloudFormation-stack die we eerder hebben gemaakt.

  1. Noteer in de CloudFormation-stackuitvoer de waarde voor EMRServerlessExecutionScript, de locatie van het Python-script in de S3-bucket.
  2. Let ook op de waarde voor EMRServerlessJobExecutionRole, wat de IAM-rol is die moet worden gebruikt bij het uitvoeren van de Amazon EMR Serverless-taak.
  3. Toegang tot Amazon EMR Studio door de koppeling in de CloudFormation-stackuitvoer voor de sleutel te kiezen of te kopiëren EMRStudioURL.
  4. Kies Toepassingen voor Serverless in het navigatievenster.

U vindt een EMR-applicatie gemaakt door de CloudFormation-stack met de naam emr-spark-redshift.

  1. Kies de sollicitatienaam om een ​​vacature in te dienen.
  2. Kies Vacature indienen.
  3. Onder Details van de baanvoor Naam, voert u een herkenbare naam voor de taak in.
  4. Voor Runtime-rol, kies de IAM-rol die u eerder uit de CloudFormation-stackuitvoer hebt genoteerd.
  5. Voor Script locatie, geef het pad op naar het Python-script dat u eerder hebt genoteerd in de CloudFormation-stackuitvoer.
  6. Vouw de sectie uit Vonk eigenschappen En kies de Bewerken in tekst
  7. Voer de volgende waarde in het tekstvak in, dat het pad naar het redshift-connector, Amazon Redshift JDBC-stuurprogramma, spark-avro JAAR, en minimal-json JAR-bestanden:
    --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. Kies Vacature indienen.
  9. Wacht tot de taak is voltooid en de uitvoeringsstatus wordt weergegeven als Succes.
  10. Navigeer naar de Amazon Redshift-query-editor om te zien of de tabel met succes is gemaakt.
  11. Controleer de pushdown-query's die worden uitgevoerd voor de Amazon Redshift-querygroep emr-serverless-redshift. U kunt de volgende SQL-instructie tegen de database uitvoeren dev:
    SELECT query_text FROM SYS_QUERY_HISTORY WHERE query_label = 'emr-serverless-redshift' ORDER BY start_time DESC LIMIT 1

U kunt zien dat de pushdown-query en de geretourneerde resultaten worden opgeslagen in de bestandsindeling Parquet op Amazon S3.

Gebruik Amazon Redshift-integratie met Apache Spark op AWS Glue

Vanaf AWS Glue versie 4.0 en hoger kunnen de Apache Spark-taken die verbinding maken met Amazon Redshift gebruikmaken van de Amazon Redshift-integratie voor Apache Spark en het Amazon Redshift JDBC-stuurprogramma. Bestaande AWS Glue-taken die Amazon Redshift al als bron of doel gebruiken, kunnen worden geüpgraded naar AWS Glue 4.0 om te profiteren van deze nieuwe connector. De CloudFormation-sjabloon die bij dit bericht wordt geleverd, maakt de volgende AWS Glue-bronnen:

  • AWS Glue-verbinding voor Amazon Redshift – De verbinding om een ​​verbinding tot stand te brengen van AWS Glue naar Amazon Redshift met behulp van de Amazon Redshift-integratie voor Apache Spark
  • IAM-rol gekoppeld aan de AWS Glue-taak - De IAM-rol om machtigingen te beheren om de AWS Glue-taak uit te voeren
  • AWS Lijmbaan – Het script voor de AWS Glue-taak die transformaties en aggregaties uitvoert met behulp van de Amazon Redshift-integratie voor Apache Spark

Het volgende voorbeeld gebruikt de AWS Glue-verbinding die is gekoppeld aan de AWS Glue-taak met PySpark en omvat de volgende stappen:

  1. Kies op de AWS Glue-console: aansluitingen in het navigatievenster.
  2. Onder aansluitingen, kies de AWS Glue-verbinding voor Amazon Redshift gemaakt door de CloudFormation-sjabloon.
  3. Controleer de verbindingsdetails.

U kunt deze verbinding nu hergebruiken binnen een vacature of over meerdere vacatures heen.

  1. Op de Connectoren pagina, kies de AWS Glue-taak gemaakt door de CloudFormation-stack eronder Uw banen, of open de AWS Glue-taak met behulp van de URL die voor de sleutel is opgegeven GlueJob in de CloudFormation-stackuitvoer.
  2. Open en verifieer het script voor de AWS Glue-taak.
  3. Op de Details van de baan tabblad, zorg ervoor dat Lijm versie is ingesteld op Lijm 4.0.

Dit zorgt ervoor dat de taak de nieuwste gebruikt redshift-spark connector.

  1. Uitvouwen Geavanceerde eigenschappen en in de aansluitingen sectie, controleer of de verbinding die is gemaakt door de CloudFormation-stack is gekoppeld.
  2. Controleer de taakparameters die zijn toegevoegd voor de AWS Glue-taak. Deze waarden zijn ook beschikbaar in de uitvoer voor de CloudFormation-stack.
  3. Kies Bespaar en lopen.

U kunt de status van de taakuitvoering bekijken op de lopen Tab.

  1. Nadat de taakuitvoering met succes is voltooid, kunt u de uitvoer controleren van de tabeltestlijm die is gemaakt door de AWS Glue-taak.
  2. We controleren de pushdown-query's die worden uitgevoerd voor de Amazon Redshift-querygroep glue-redshift. U kunt de volgende SQL-instructie tegen de database uitvoeren dev:
    SELECT query_text FROM SYS_QUERY_HISTORY WHERE query_label = 'glue-redshift' ORDER BY start_time DESC LIMIT 1

Beste praktijken

Houd rekening met de volgende praktische tips:

  • Overweeg om de Amazon Redshift-integratie voor Apache Spark van Amazon EMR te gebruiken in plaats van de redshift-spark connector (communityversie) voor uw nieuwe Apache Spark-taken.
  • Als u bestaande Apache Spark-taken hebt met behulp van de redshift-spark connector (community-versie), overweeg dan om ze te upgraden om de Amazon Redshift-integratie voor Apache Spark te gebruiken
  • De Amazon Redshift-integratie voor Apache Spark past automatisch predikaat- en query-pushdown toe om te optimaliseren voor prestaties. We raden aan ondersteunde functies te gebruiken (autopushdown) in uw vraag. De Amazon Redshift-integratie voor Apache Spark verandert de functie in een SQL-query en voert de query uit in Amazon Redshift. Deze optimalisatie resulteert in het ophalen van vereiste gegevens, zodat Apache Spark minder gegevens kan verwerken en betere prestaties levert.
    • Overweeg het gebruik van geaggregeerde pushdown-functies zoals avg, count, max, min en sum om gefilterde gegevens op te halen voor gegevensverwerking.
    • Overweeg het gebruik van Booleaanse pushdown-operators zoals in, isnull, isnotnull, contains, endswith en startswith om gefilterde gegevens op te halen voor gegevensverwerking.
    • Overweeg het gebruik van logische pushdown-operators zoals and, or en not (of !) om gefilterde gegevens op te halen voor gegevensverwerking.
  • Het wordt aanbevolen om een ​​IAM-rol door te geven met behulp van de parameter aws_iam_role voor de Amazon Redshift-authenticatie van uw Apache Spark-toepassing op Amazon EMR of AWS Glue. De IAM-rol moet de benodigde machtigingen hebben om tijdelijke IAM-referenties op te halen om zich te authenticeren bij Amazon Redshift, zoals weergegeven in de sectie "Voorbeelden voor Amazon Redshift-integratie voor Apache Spark in een Apache Spark-toepassing" van deze blog.
  • Met deze functie hoef je je Amazon Redshift-gebruikersnaam en -wachtwoord niet bij te houden in de geheimenmanager en de Amazon Redshift-database.
  • Amazon Redshift gebruikt de UNLOAD SQL-instructie om deze tijdelijke gegevens op Amazon S3 op te slaan. De Apache Spark-toepassing haalt de resultaten op uit de tijdelijke map (opgeslagen in de bestandsindeling Parquet). Deze tijdelijke map op Amazon S3 wordt niet automatisch opgeschoond en kan daarom extra kosten met zich meebrengen. We raden aan om te gebruiken Levenscyclusbeleid van Amazon S3 om de bewaarregels voor de S3-bucket te definiëren.
  • Het wordt aanbevolen om in te schakelen Amazon Redshift-auditregistratie om de informatie over verbindingen en gebruikersactiviteiten in uw database te loggen.
  • Het wordt aanbevolen om in te schakelen Amazon Redshift-versleuteling in rust om uw gegevens te versleutelen terwijl Amazon Redshift deze in zijn datacenters schrijft en voor u te ontsleutelen wanneer u deze opent.
  • Het wordt aanbevolen om te upgraden naar AWS Glue v4.0 en hoger om de Amazon Redshift-integratie voor Apache Spark te gebruiken, die kant-en-klaar beschikbaar is. Upgraden naar deze versie van AWS Glue maakt automatisch gebruik van deze functie.
  • Het wordt aanbevolen om te upgraden naar Amazon EMR v6.9.0 en hoger om de Amazon Redshift-integratie voor Apache Spark te gebruiken. U hoeft geen stuurprogramma's of JAR-bestanden expliciet te beheren.
  • Overweeg om Amazon EMR Studio-notebooks te gebruiken voor interactie met uw Amazon Redshift-gegevens in uw Apache Spark-toepassing.
  • Overweeg AWS Glue Studio te gebruiken om Apache Spark-taken te maken met behulp van een visuele interface. U kunt ook overschakelen naar het schrijven van Apache Spark-code in Scala of PySpark binnen AWS Glue Studio.

Opruimen

Voer de volgende stappen uit om de resources op te schonen die zijn gemaakt als onderdeel van de CloudFormation-sjabloon om ervoor te zorgen dat u niet wordt gefactureerd voor de resources als u ze niet langer gebruikt:

  1. Stop de Amazon EMR Serverless-applicatie:
    • Toegang tot Amazon EMR Studio door de koppeling in de CloudFormation-stackuitvoer voor de sleutel te kiezen of te kopiëren EMRStudioURL.
    • Kies Toepassingen voor Serverless in het navigatievenster.

U vindt een EMR-applicatie gemaakt door de CloudFormation-stack met de naam emr-spark-redshift.

    • Als de toepassingsstatus wordt weergegeven als Gestopt, kunt u doorgaan naar de volgende stappen. Als de toepassingsstatus echter Gestart is, kiest u de naam van de toepassing en kiest u vervolgens Toepassing stoppen en Toepassing stoppen nogmaals om te bevestigen.
  1. Verwijder de Amazon EMR Studio-werkruimte:
    • Toegang tot Amazon EMR Studio door de koppeling in de CloudFormation-stackuitvoer voor de sleutel te kiezen of te kopiëren EMRStudioURL.
    • Kies workspaces in het navigatievenster.
    • Selecteer de werkruimte die u hebt gemaakt en kies Verwijder, kies dan Verwijder nogmaals om te bevestigen.
  2. Verwijder de CloudFormation-stack:
    • Navigeer op de AWS CloudFormation-console naar de stapel die u eerder hebt gemaakt.
    • Kies de stapelnaam en kies vervolgens Verwijder om de stapel te verwijderen en de bronnen te verwijderen die zijn gemaakt als onderdeel van dit bericht.
    • Kies op het bevestigingsscherm Stapel verwijderen.

Conclusie

In dit bericht hebben we uitgelegd hoe je de Amazon Redshift-integratie voor Apache Spark kunt gebruiken om applicaties te bouwen en te implementeren met Amazon EMR op Amazon EC2, Amazon EMR Serverless en AWS Glue om automatisch predikaat en query-pushdown toe te passen om de queryprestaties voor gegevens te optimaliseren in Amazon Redshift. Het wordt ten zeerste aanbevolen om Amazon Redshift-integratie voor Apache Spark te gebruiken voor een naadloze en veilige verbinding met Amazon Redshift vanuit uw Amazon EMR of AWS Glue.

Dit is wat enkele van onze klanten te zeggen hebben over de Amazon Redshift-integratie voor Apache Spark:

“We stellen onze ingenieurs in staat om hun datapijplijnen en applicaties te bouwen met Apache Spark met behulp van Python en Scala. We wilden een op maat gemaakte oplossing die operaties vereenvoudigde en sneller en efficiënter leverde voor onze klanten, en dat is wat we krijgen met de nieuwe Amazon Redshift-integratie voor Apache Spark.”

-Huron Consulting

“GE Aerospace gebruikt AWS-analyses en Amazon Redshift om kritieke zakelijke inzichten mogelijk te maken die belangrijke zakelijke beslissingen sturen. Met de ondersteuning voor automatisch kopiëren van Amazon S3 kunnen we eenvoudigere gegevenspijplijnen bouwen om gegevens van Amazon S3 naar Amazon Redshift te verplaatsen. Dit versnelt het vermogen van onze dataproductteams om toegang te krijgen tot data en inzichten te leveren aan eindgebruikers. We besteden meer tijd aan het toevoegen van waarde via data en minder tijd aan integraties.”

—GE Luchtvaart

“Onze focus ligt op het bieden van zelfbedieningstoegang tot gegevens voor al onze gebruikers bij Goldman Sachs. Via Legend, ons open-source platform voor gegevensbeheer en governance, stellen we gebruikers in staat om gegevensgerichte toepassingen te ontwikkelen en gegevensgestuurde inzichten te verkrijgen terwijl we samenwerken in de financiële dienstverlening. Met de Amazon Redshift-integratie voor Apache Spark heeft ons dataplatformteam toegang tot Amazon Redshift-data met minimale handmatige stappen, waardoor zero-code ETL mogelijk wordt. ze verzamelen volledige en tijdige informatie. We verwachten een prestatieverbetering van applicaties en een verbeterde beveiliging, aangezien onze gebruikers nu eenvoudig toegang hebben tot de nieuwste gegevens in Amazon Redshift.”

-Goldman Sachs


Over de auteurs

Gagan Brahmi is een Senior Specialist Solutions Architect gericht op big data-analyse en AI/ML-platform bij Amazon Web Services. Gagan heeft meer dan 18 jaar ervaring in informatietechnologie. Hij helpt klanten bij het ontwerpen en bouwen van zeer schaalbare, performante en veilige cloudgebaseerde oplossingen op AWS. In zijn vrije tijd brengt hij tijd door met zijn gezin en verkent hij nieuwe plekken.

Vivek Gautam is Data Architect met specialisatie in data lakes bij AWS Professional Services. Hij werkt met zakelijke klanten en bouwt dataproducten, analyseplatforms en oplossingen op AWS. Als Vivek niet bezig is met het bouwen en ontwerpen van datameren, is hij een voedselliefhebber die ook graag nieuwe reisbestemmingen verkent en wandeltochten maakt.

Naresh Gautam is een Data Analytics en AI/ML leider bij AWS met 20 jaar ervaring, die het leuk vindt om klanten te helpen bij het ontwerpen van zeer beschikbare, krachtige en kosteneffectieve data-analyse en AI/ML-oplossingen om klanten te voorzien van datagestuurde besluitvorming . In zijn vrije tijd houdt hij van meditatie en koken.

Beau Sharifi is een Software Development Engineer binnen het Amazon Redshift-stuurprogrammateam, waar hij de ontwikkeling van de Amazon Redshift-integratie met Apache Spark-connector leidt. Hij heeft meer dan 20 jaar ervaring met het bouwen van datagestuurde platforms in meerdere sectoren. In zijn vrije tijd brengt hij graag tijd door met zijn gezin en houdt hij van surfen.

Tijdstempel:

Meer van AWS-bigdata