Menyambungkan ke Amazon S3
Artikel ini menjelaskan cara menyambungkan ke AWS S3 dari Azure Databricks.
Mengakses wadah S3 dengan URI dan kunci AWS
Anda dapat mengatur properti Spark untuk mengonfigurasi kunci AWS untuk mengakses S3.
Databricks merekomendasikan penggunaan cakupan rahasia untuk menyimpan semua kredensial. Anda dapat memberi pengguna, perwakilan layanan, dan grup di ruang kerja Anda akses untuk membaca cakupan rahasia. Ini melindungi kunci AWS sekaligus memungkinkan pengguna mengakses S3. Untuk membuat cakupan rahasia, lihat Mengelola cakupan rahasia.
Kredensial dapat dibatasi ke kluster atau notebook. Gunakan kontrol akses kluster dan kontrol akses notebook bersama-sama untuk melindungi akses ke S3. Lihat Izin komputasi dan Berkolaborasi menggunakan notebook Databricks.
Untuk mengatur properti Spark, gunakan cuplikan berikut dalam konfigurasi Spark kluster untuk mengatur kunci AWS yang disimpan dalam cakupan rahasia sebagai variabel lingkungan:
AWS_SECRET_ACCESS_KEY={{secrets/scope/aws_secret_access_key}}
AWS_ACCESS_KEY_ID={{secrets/scope/aws_access_key_id}}
Anda kemudian dapat membaca dari S3 menggunakan perintah berikut:
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}/")
Akses S3 dengan opsi Hadoop sumber terbuka
Databricks Runtime mendukung konfigurasi sistem file S3A menggunakan opsi Hadoop sumber terbuka. Anda dapat mengonfigurasi properti global dan properti per wadah.
Konfigurasi global
# 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
Konfigurasi per wadah
Anda mengonfigurasi properti per wadah menggunakan sintaks spark.hadoop.fs.s3a.bucket.<bucket-name>.<configuration-key>
. Ini memungkinkan Anda menyiapkan wadah dengan kredensial, titik akhir, dan sebagainya yang berbeda.
Misalnya, selain pengaturan S3 global, Anda dapat mengonfigurasi setiap wadah satu per satu menggunakan kunci berikut:
# 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>
Pola yang tidak digunakan lagi untuk menyimpan dan mengakses data dari Azure Databricks
Berikut ini adalah pola penyimpanan yang tidak digunakan lagi:
- Databricks tidak lagi merekomendasikan pemasangan lokasi data eksternal ke Databricks Filesystem. Lihat Memasang penyimpanan objek cloud di Azure Databricks.
Penting
- Sistem file S3A memungkinkan penembolokan secara default dan merilis sumber daya pada 'FileSystem.close()'. Untuk menghindari utas lain menggunakan referensi ke sistem file yang di-cache dengan tidak benar, jangan secara eksplisit menggunakan 'FileSystem.close().
- Sistem file S3A tidak menghapus penanda direktori saat menutup aliran output. Aplikasi warisan berdasarkan versi Hadoop yang tidak menyertakan HADOOP-13230 dapat salah menafsirkannya sebagai direktori kosong bahkan jika ada file di dalamnya.