Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Mit der Amazon-Redshift-Integration für Apache Spark authentifizieren
Wird verwendet AWS Secrets Manager , um Anmeldeinformationen abzurufen und eine Verbindung zu Amazon Redshift herzustellen
Das folgende Codebeispiel zeigt, wie Sie Anmeldeinformationen abrufen können AWS Secrets Manager , um eine Verbindung zu einem Amazon Redshift Redshift-Cluster mit der PySpark Schnittstelle für Apache Spark in Python herzustellen.
from pyspark.sql import SQLContext import boto3 sc = # existing SparkContext sql_context = SQLContext(sc) secretsmanager_client = boto3.client('secretsmanager') secret_manager_response = secretsmanager_client.get_secret_value( SecretId='string', VersionId='string', VersionStage='string' ) username = # get username from secret_manager_response password = # get password from secret_manager_response url = "jdbc:redshift://redshifthost:5439/database?user=" + username + "&password=" + password # Read data from a table df = sql_context.read \ .format("io.github.spark_redshift_community.spark.redshift") \ .option("url", url) \ .option("dbtable", "my_table") \ .option("tempdir", "s3://path/for/temp/data") \ .load()
Verwenden Sie IAM, um Anmeldeinformationen abzurufen und eine Verbindung zu Amazon Redshift herzustellen
Sie können den von Amazon Redshift bereitgestellten JDBC-Version 2 verwenden, um mit dem Spark-Konnektor eine Verbindung mit Amazon Redshift herzustellen. Um AWS Identity and Access Management (IAM) zu verwenden, konfigurieren Sie Ihre JDBC-URL für die Verwendung der IAM-Authentifizierung. Um eine Verbindung zu einem Redshift-Cluster von Amazon EMR herzustellen, müssen Sie Ihrer IAM-Rolle die Berechtigung erteilen, temporäre IAM-Anmeldeinformationen abzurufen. Weisen Sie Ihrer IAM-Rolle die folgenden Berechtigungen zu, damit sie Anmeldeinformationen abrufen und Amazon-S3-Vorgänge ausführen kann.
-
Redshift: GetClusterCredentials (für bereitgestellte Amazon Redshift Redshift-Cluster)
-
Redshift: DescribeClusters (für bereitgestellte Amazon Redshift Redshift-Cluster)
-
Redshift: GetWorkgroup (für serverlose Amazon Redshift Redshift-Arbeitsgruppen)
-
Redshift: GetCredentials (für serverlose Amazon Redshift Redshift-Arbeitsgruppen)
Weitere Informationen zu GetClusterCredentials
finden Sie unter Ressourcenrichtlinien für GetClusterCredentials
.
Sie müssen außerdem sicherstellen, dass Amazon Redshift die IAM-Rolle während COPY
- und UNLOAD
-Operationen übernehmen kann.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
Das folgende Beispiel verwendet die IAM-Authentifizierung zwischen Spark und Amazon Redshift:
from pyspark.sql import SQLContext import boto3 sc = # existing SparkContext sql_context = SQLContext(sc) url = "jdbc:redshift:iam//
redshift-host
:redshift-port
/db-name
" iam_role_arn = "arn:aws:iam::account-id
:role/role-name
" # Read data from a table df = sql_context.read \ .format("io.github.spark_redshift_community.spark.redshift") \ .option("url",url
) \ .option("aws_iam_role",iam_role_arn
) \ .option("dbtable", "my_table
") \ .option("tempdir", "s3a://path/for/temp/data
") \ .mode("error") \ .load()