Dela via


Anslut till Amazon S3

Den här artikeln beskriver hur du ansluter till AWS S3 från Azure Databricks.

Åtkomst till S3-bucketar med URI:er och AWS-nycklar

Du kan ange Spark-egenskaper för att konfigurera AWS-nycklar för åtkomst till S3.

Databricks rekommenderar att du använder hemliga omfång för att lagra alla autentiseringsuppgifter. Du kan ge användare, huvudkonto för tjänsten och grupper på din arbetsyta åtkomst för att läsa det hemliga omfånget. Detta skyddar AWS-nyckeln samtidigt som användarna får åtkomst till S3. Information om hur du skapar ett hemligt omfång finns i Hemliga omfång.

Autentiseringsuppgifterna kan begränsas till antingen ett kluster eller en notebook-fil. Använd både åtkomstkontroll för kluster och åtkomstkontroll för notebook-filer tillsammans för att skydda åtkomsten till S3. Se Beräkningsbehörigheter och Samarbeta med databricks notebook-filer.

Om du vill ange Spark-egenskaper använder du följande kodfragment i ett klusters Spark-konfiguration för att ange AWS-nycklar som lagras i hemliga omfång som miljövariabler:

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

Du kan sedan läsa från S3 med hjälp av följande kommandon:

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}/")

Åtkomst till S3 med Hadoop-alternativ med öppen källkod

Databricks Runtime stöder konfiguration av S3A-filsystemet med hadoop-alternativ med öppen källkod. Du kan konfigurera globala egenskaper och egenskaper per bucket.

Global konfiguration

# 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

Konfiguration per bucket

Du konfigurerar egenskaper per bucket med hjälp av syntaxen spark.hadoop.fs.s3a.bucket.<bucket-name>.<configuration-key>. På så sätt kan du konfigurera bucketar med olika autentiseringsuppgifter, slutpunkter och så vidare.

Förutom globala S3-inställningar kan du till exempel konfigurera varje bucket individuellt med hjälp av följande nycklar:

# 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>

Inaktuella mönster för att lagra och komma åt data från Azure Databricks

Följande är inaktuella lagringsmönster:

Viktigt!

  • S3A-filsystemet möjliggör cachelagring som standard och frigör resurser på FileSystem.close(). Om du vill undvika andra trådar med en referens till det cachelagrade filsystemet felaktigt ska du inte uttryckligen använda 'FileSystem.close().
  • S3A-filsystemet tar inte bort katalogmarkörer när du stänger en utdataström. Äldre program baserade på Hadoop-versioner som inte innehåller HADOOP-13230 kan feltolka dem som tomma kataloger även om det finns filer inuti.