Amazon S3'e bağlanma
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 kapsamları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ını yönetme.
Kimlik bilgileri bir küme veya not defteri ile kapsamlandırılabilir. 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 dizi kapsamlarında 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.