Csatlakozás az Amazon S3-ba

Ez a cikk bemutatja, hogyan csatlakozhat az AWS S3-hoz az Azure Databricksből.

S3-gyűjtők elérése URI-kkal és AWS-kulcsokkal

A Spark-tulajdonságokat beállíthatja úgy, hogy AWS-kulcsokat konfiguráljon az S3 eléréséhez.

A Databricks titkos hatókörök használatát javasolja az összes hitelesítő adat tárolására. Hozzáférést adhat a munkaterület felhasználóinak, alkalmazáspéldányainak és csoportjainak a titkos hatókör elolvasásához. Ez védi az AWS-kulcsot, miközben lehetővé teszi a felhasználók számára az S3 elérését. Titkos kulcs hatókörének létrehozásához lásd : Titkos kulcsok hatókörei.

A hitelesítő adatok fürtre vagy jegyzetfüzetre is kiterjedhetnek. A fürthozzáférés-vezérlés és a jegyzetfüzet-hozzáférés-vezérlés együttes használata az S3-hoz való hozzáférés védelméhez. Lásd: Számítási engedélyek és együttműködés a Databricks-jegyzetfüzetekkel.

A Spark-tulajdonságok beállításához használja a fürt Spark-konfigurációjának következő kódrészletét a titkos hatókörökben tárolt AWS-kulcsok környezeti változóként való beállításához:

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

Ezután az S3-ból a következő parancsokkal olvashat:

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

Az S3 elérése nyílt forráskódú Hadoop-beállításokkal

A Databricks Runtime támogatja az S3A fájlrendszer nyílt forráskódú Hadoop-beállítások használatával történő konfigurálását. Globális tulajdonságokat és gyűjtőnkénti tulajdonságokat konfigurálhat.

Globális konfiguráció

# 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

Gyűjtőnkénti konfiguráció

A gyűjtőnkénti tulajdonságokat a szintaxis spark.hadoop.fs.s3a.bucket.<bucket-name>.<configuration-key>használatával konfigurálhatja. Ez lehetővé teszi különböző hitelesítő adatokkal, végpontokkal és egyebekkel rendelkező gyűjtők beállítását.

A globális S3-beállítások mellett például egyenként is konfigurálhatja az egyes gyűjtőket a következő kulcsokkal:

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

Az adatok tárolásának vagy Azure Databricksből való elérésének elavult mintái

Az elavult tárolási minták a következők:

Fontos

  • Az S3A fájlrendszer alapértelmezés szerint engedélyezi a gyorsítótárazást, és felszabadítja az erőforrásokat a "FileSystem.close()"-on. Ha szeretné elkerülni, hogy más szálak helytelenül hivatkozzon a gyorsítótárazott fájlrendszerre, ne használja explicit módon a "FileSystem.close() fájlt.
  • Az S3A fájlrendszer nem távolítja el a könyvtárjelölőket a kimeneti stream bezárásakor. A HADOOP-13230-at nem tartalmazó Hadoop-verziókon alapuló régi alkalmazások üres könyvtárakként értelmezhetik őket, még akkor is, ha vannak benne fájlok.