Udostępnij za pośrednictwem


Nawiązywanie połączenia z usługą Amazon S3

W tym artykule wyjaśniono, jak nawiązać połączenie z usługą AWS S3 z usługi Azure Databricks.

Uzyskiwanie dostępu do zasobników S3 przy użyciu identyfikatorów URI i kluczy platformy AWS

Możesz ustawić właściwości platformy Spark, aby skonfigurować klucze platformy AWS w celu uzyskania dostępu do usługi S3.

Usługa Databricks zaleca używanie zakresów wpisów tajnych do przechowywania wszystkich poświadczeń. Możesz przyznać użytkownikom, jednostkom usługi i grupom w obszarze roboczym dostęp do odczytu zakresu wpisu tajnego. Chroni to klucz platformy AWS, umożliwiając użytkownikom dostęp do usługi S3. Aby utworzyć zakres wpisu tajnego, zobacz Zarządzanie zakresami wpisów tajnych.

Poświadczenia mogą być ograniczone do klastra lub notesu. Użyj kontroli dostępu do klastra i kontroli dostępu do notesu razem, aby chronić dostęp do usługi S3. Zobacz Uprawnienia obliczeniowe i Współpraca przy użyciu notesów usługi Databricks.

Aby ustawić właściwości platformy Spark, użyj następującego fragmentu kodu w konfiguracji spark klastra, aby ustawić klucze platformy AWS przechowywane w zakresach wpisów tajnych jako zmienne środowiskowe:

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

Następnie możesz odczytać z usługi S3 przy użyciu następujących poleceń:

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

Uzyskiwanie dostępu do usługi S3 za pomocą opcji hadoop typu open source

Środowisko Databricks Runtime obsługuje konfigurowanie systemu plików S3A przy użyciu opcji hadoop typu open source. Możesz skonfigurować właściwości globalne i właściwości poszczególnych zasobnika.

Konfiguracja globalna

# 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

Konfiguracja zasobnika

Właściwości poszczególnych zasobnika można skonfigurować przy użyciu składni spark.hadoop.fs.s3a.bucket.<bucket-name>.<configuration-key>. Dzięki temu można skonfigurować zasobniki z różnymi poświadczeniami, punktami końcowymi itd.

Na przykład oprócz globalnych ustawień S3 można skonfigurować poszczególne zasobniki osobno przy użyciu następujących kluczy:

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

Przestarzałe wzorce przechowywania danych i uzyskiwania do nich dostępu z usługi Azure Databricks

Poniżej przedstawiono przestarzałe wzorce magazynu:

Ważne

  • System plików S3A domyślnie włącza buforowanie i zwalnia zasoby w folderze "FileSystem.close()". Aby uniknąć niepoprawnego używania innych wątków przy użyciu odwołania do buforowanego systemu plików, nie należy jawnie używać polecenia "FileSystem.close().
  • System plików S3A nie usuwa znaczników katalogu podczas zamykania strumienia wyjściowego. Starsze aplikacje oparte na wersjach hadoop, które nie zawierają usługi HADOOP-13230 , mogą źle interpretować je jako puste katalogi, nawet jeśli istnieją pliki wewnątrz.