Delen via


Verbinding maken naar Amazon S3

In dit artikel wordt uitgelegd hoe u vanuit Azure Databricks verbinding maakt met AWS S3.

Toegang tot S3-buckets met URI's en AWS-sleutels

U kunt Spark-eigenschappen instellen om een AWS-sleutels te configureren voor toegang tot S3.

Databricks raadt aan geheime bereiken te gebruiken voor het opslaan van alle referenties. U kunt gebruikers, service-principals en groepen in uw werkruimte toegang verlenen om het geheime bereik te lezen. Hierdoor wordt de AWS-sleutel beschermd terwijl gebruikers toegang hebben tot S3. Zie Geheime bereiken als u een geheim bereik wilt maken.

De referenties kunnen worden beperkt tot een cluster of een notebook. Gebruik toegangsbeheer voor clusters en notebooktoegangsbeheer samen om de toegang tot S3 te beveiligen. Zie Compute-machtigingen en samenwerken met behulp van Databricks-notebooks.

Als u Spark-eigenschappen wilt instellen, gebruikt u het volgende fragment in de Spark-configuratie van een cluster om de AWS-sleutels in te stellen die zijn opgeslagen in geheime bereiken als omgevingsvariabelen:

AWS_SECRET_ACCESS_KEY={{secrets/scope/aws_secret_access_key}}
AWS_ACCESS_KEY_ID={{secrets/scope/aws_access_key_id}}

U kunt vervolgens lezen uit S3 met behulp van de volgende opdrachten:

aws_bucket_name = "my-s3-bucket"

df = spark.read.load(f"s3a://{aws_bucket_name}/flowers/delta/")
display(df)
dbutils.fs.ls(f"s3a://{aws_bucket_name}/")

Access S3 met opensource Hadoop-opties

Databricks Runtime ondersteunt het configureren van het S3A-bestandssysteem met behulp van opensource Hadoop-opties. U kunt globale eigenschappen en eigenschappen per bucket configureren.

Globale configuratie

# Global S3 configuration
spark.hadoop.fs.s3a.aws.credentials.provider <aws-credentials-provider-class>
spark.hadoop.fs.s3a.endpoint <aws-endpoint>
spark.hadoop.fs.s3a.server-side-encryption-algorithm SSE-KMS

Configuratie per bucket

U configureert eigenschappen per bucket met behulp van de syntaxis spark.hadoop.fs.s3a.bucket.<bucket-name>.<configuration-key>. Hiermee kunt u buckets instellen met verschillende referenties, eindpunten enzovoort.

Naast algemene S3-instellingen kunt u bijvoorbeeld elke bucket afzonderlijk configureren met behulp van de volgende sleutels:

# Set up authentication and endpoint for a specific bucket
spark.hadoop.fs.s3a.bucket.<bucket-name>.aws.credentials.provider <aws-credentials-provider-class>
spark.hadoop.fs.s3a.bucket.<bucket-name>.endpoint <aws-endpoint>

# Configure a different KMS encryption key for a specific bucket
spark.hadoop.fs.s3a.bucket.<bucket-name>.server-side-encryption.key <aws-kms-encryption-key>

Afgeschafte patronen voor het opslaan en openen van gegevens vanuit Azure Databricks

Hier volgen afgeschafte opslagpatronen:

Belangrijk

  • Het S3A-bestandssysteem maakt caching standaard mogelijk en publiceert resources op FileSystem.close(). Als u andere threads wilt voorkomen met behulp van een verwijzing naar het bestandssysteem in de cache, gebruikt u niet expliciet filesystem.close().
  • Het S3A-bestandssysteem verwijdert geen mapmarkeringen bij het sluiten van een uitvoerstroom. Oudere toepassingen die zijn gebaseerd op Hadoop-versies die geen HADOOP-13230 bevatten, kunnen ze verkeerd interpreteren als lege mappen, zelfs als er bestanden in zijn.