Aracılığıyla paylaş


Amazon S3'e Bağlan

Bu makalede Azure Databricks'ten AWS S3'e nasıl bağlandığınız açıklanmaktadır.

URI'ler ve AWS anahtarlarıyla S3 demetlerine erişme

S3'e erişmek için bir AWS anahtarı yapılandırmak için Spark özelliklerini ayarlayabilirsiniz.

Databricks, tüm kimlik bilgilerini depolamak için gizli dizi kapsamlarının kullanılmasını önerir. Çalışma alanınızdaki kullanıcılara, hizmet sorumlularına ve gruplara gizli dizi kapsamını okumaları için erişim verebilirsiniz. Bu, AWS anahtarını korurken kullanıcıların S3'e erişmesine de olanak sağlar. Gizli dizi kapsamı oluşturmak için bkz . Gizli dizi kapsamları.

Kimlik bilgilerinin kapsamı bir küme veya not defteri olarak ayarlanabilir. S3'e erişimi korumak için hem küme erişim denetimini hem de not defteri erişim denetimini birlikte kullanın. Bkz . İşlem izinleri ve Databricks not defterlerini kullanarak işbirliği yapma.

Spark özelliklerini ayarlamak için kümenin Spark yapılandırmasında aşağıdaki kod parçacığını kullanarak gizli kapsamlarda depolanan AWS anahtarlarını ortam değişkenleri olarak ayarlayın:

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

Ardından aşağıdaki komutları kullanarak S3'ten okuyabilirsiniz:

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

Açık kaynak Hadoop seçenekleriyle S3'e erişme

Databricks Runtime, açık kaynak Hadoop seçeneklerini kullanarak S3A dosya sisteminin yapılandırılmasını destekler. Genel özellikleri ve demet başına özellikleri yapılandırabilirsiniz.

Genel yapılandırma

# 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

Demet başına yapılandırma

Demet başına özelliklerini söz dizimini spark.hadoop.fs.s3a.bucket.<bucket-name>.<configuration-key>kullanarak yapılandırabilirsiniz. Bu, farklı kimlik bilgilerine, uç noktalara vb. sahip demetler ayarlamanıza olanak tanır.

Örneğin, genel S3 ayarlarına ek olarak aşağıdaki anahtarları kullanarak her demeti ayrı ayrı yapılandırabilirsiniz:

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

Azure Databricks'ten verileri depolamak ve verilere erişmek için kullanım dışı bırakılan desenler

Aşağıdakiler kullanım dışı bırakılmış depolama desenleridir:

  • Databricks artık dış veri konumlarının Databricks Dosya Sistemine bağlanmasını önermemektedir. Bkz. Azure Databricks'te bulut nesnesi depolamayı bağlama.

Önemli

  • S3A dosya sistemi varsayılan olarak önbelleğe almayı etkinleştirir ve 'FileSystem.close()' üzerindeki kaynakları serbest bırakır. Önbelleğe alınan dosya sistemine yanlış başvuru kullanan diğer iş parçacıklarından kaçınmak için açıkça 'FileSystem.close() kullanmayın.
  • S3A dosya sistemi, bir çıkış akışını kapatırken dizin işaretçilerini kaldırmaz. HADOOP-13230 içermeyen Hadoop sürümlerini temel alan eski uygulamalar, içinde dosyalar olsa bile bunları boş dizinler olarak yanlış yorumlayabilir.