Dela via


Ansluta 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 konfigurera en AWS-nyckel via set Spark-egenskaper för åtkomst till S3.

Databricks rekommenderar att du använder hemlighetsomfång för att lagra alla credentials. Du kan grant användare, tjänstens huvudnamn och grupper på din arbetsyta 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 Hantera hemliga omfång.

credentials kan antingen definieras till ett kluster eller en anteckningsbok. 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.

För att set Spark-egenskaper använder du följande kodfragment i ett klusters Spark-konfiguration för att set AWS-nycklarna som lagras i hemliga områden 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 set upp segment med olika credentials, endpoints 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 remove inte 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.