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:
- Databricks rekommenderar inte längre montering av externa dataplatser till Databricks-filsystemet. Se Montera molnobjektlagring på Azure Databricks.
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.