Menyambungkan ke Azure Data Lake Storage Gen2 dan Blob Storage
Catatan
Artikel ini menjelaskan pola warisan untuk mengonfigurasi akses ke Azure Data Lake Storage Gen2. Databricks merekomendasikan penggunaan Unity Catalog untuk mengonfigurasi akses ke Azure Data Lake Storage Gen2 dan volume untuk interaksi langsung dengan file. Lihat Menyambungkan ke penyimpanan dan layanan objek cloud menggunakan Katalog Unity.
Artikel ini menjelaskan cara menyambungkan ke Azure Data Lake Storage Gen2 dan Blob Storage dari Azure Databricks.
Catatan
- Driver Windows Azure Storage Blob (WASB) warisan tidak digunakan lagi. ABFS memiliki banyak keuntungan dibandingkan WASB. Lihat Dokumentasi Azure di ABFS. Untuk dokumentasi bekerja dengan driver WASB warisan, lihat Menyambungkan ke Azure Blob Storage dengan WASB (warisan).
- Azure telah mengumumkan penghentian Azure Data Lake Storage Gen1 yang tertunda. Azure Databricks merekomendasikan migrasi semua data dari Azure Data Lake Storage Gen1 ke Azure Data Lake Storage Gen2. Jika Anda belum bermigrasi, lihat Mengakses Azure Data Lake Storage Gen1 dari Azure Databricks.
Menyambungkan ke Azure Data Lake Storage Gen2 atau Blob Storage menggunakan kredensial Azure
Kredensial berikut dapat digunakan untuk mengakses Azure Data Lake Storage Gen2 atau Blob Storage:
OAuth 2.0 dengan perwakilan layanan MICROSOFT Entra ID: Databricks merekomendasikan penggunaan perwakilan layanan ID Microsoft Entra untuk menyambungkan ke Azure Data Lake Storage Gen2. Untuk membuat perwakilan layanan ID Microsoft Entra dan menyediakannya akses ke akun penyimpanan Azure, lihat Mengakses penyimpanan menggunakan perwakilan layanan & ID Microsoft Entra(Azure Active Directory).
Untuk membuat perwakilan layanan ID Microsoft Entra, Anda harus memiliki
Application Administrator
peran atauApplication.ReadWrite.All
izin di ID Microsoft Entra. Untuk menetapkan peran pada akun penyimpanan, Anda harus menjadi Pemilik atau pengguna dengan peran Administrator Akses Pengguna Azure RBAC di akun penyimpanan.Penting
Penyimpanan blob tidak mendukung perwakilan layanan ID Microsoft Entra.
Tanda tangan akses bersama (SAS): Anda dapat menggunakan token SAS penyimpanan untuk mengakses penyimpanan Azure. Dengan SAS, Anda dapat membatasi akses ke akun penyimpanan menggunakan token sementara dengan kontrol akses terperinci.
Anda hanya dapat memberikan izin token SAS yang Anda miliki di akun penyimpanan, kontainer, atau file sendiri.
Kunci akun: Anda dapat menggunakan kunci akses akun penyimpanan untuk mengelola akses ke Azure Storage. Kunci akses akun penyimpanan menyediakan akses penuh ke konfigurasi akun penyimpanan, serta data. Databricks merekomendasikan penggunaan perwakilan layanan ID Microsoft Entra atau token SAS untuk menyambungkan ke penyimpanan Azure alih-alih kunci akun.
Untuk melihat kunci akses akun, Anda harus memiliki peran Pemilik, Kontributor, atau Layanan Operator Kunci Akun Penyimpanan di akun penyimpanan.
Databricks merekomendasikan penggunaan cakupan rahasia untuk menyimpan semua mandat. Anda dapat memberikan akses kepada pengguna, prinsipal layanan, dan grup di ruang kerja Anda untuk membaca cakupan rahasia. Ini melindungi kredensial Azure sambil memungkinkan pengguna mengakses penyimpanan Azure. Untuk membuat cakupan rahasia, lihat Cakupan rahasia.
Mengatur properti Spark untuk mengonfigurasi kredensial Azure untuk mengakses penyimpanan Azure
Anda dapat mengatur properti Spark untuk mengonfigurasi kredensial Azure untuk mengakses penyimpanan Azure. Kredensial dapat dilingkup ke kluster atau buku catatan. Gunakan kontrol akses kluster dan kontrol akses notebook bersama-sama untuk melindungi akses ke penyimpanan Azure. Lihat Izin komputasi dan Berkolaborasi menggunakan notebook Databricks.
Catatan
Perwakilan layanan ID Microsoft Entra juga dapat digunakan untuk mengakses penyimpanan Azure dari gudang SQL, lihat Mengaktifkan konfigurasi akses data.
Untuk mengatur properti Spark, gunakan cuplikan berikut dalam konfigurasi Spark kluster atau buku catatan:
Perwakilan layanan Azure
Gunakan format berikut untuk mengatur konfigurasi Spark kluster:
spark.hadoop.fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net OAuth
spark.hadoop.fs.azure.account.oauth.provider.type.<storage-account>.dfs.core.windows.net org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider
spark.hadoop.fs.azure.account.oauth2.client.id.<storage-account>.dfs.core.windows.net <application-id>
spark.hadoop.fs.azure.account.oauth2.client.secret.<storage-account>.dfs.core.windows.net {{secrets/<secret-scope>/<service-credential-key>}}
spark.hadoop.fs.azure.account.oauth2.client.endpoint.<storage-account>.dfs.core.windows.net https://login.microsoftonline.com/<directory-id>/oauth2/token
Anda bisa menggunakan spark.conf.set
di buku catatan, seperti yang diperlihatkan dalam contoh berikut:
service_credential = dbutils.secrets.get(scope="<secret-scope>",key="<service-credential-key>")
spark.conf.set("fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net", "OAuth")
spark.conf.set("fs.azure.account.oauth.provider.type.<storage-account>.dfs.core.windows.net", "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider")
spark.conf.set("fs.azure.account.oauth2.client.id.<storage-account>.dfs.core.windows.net", "<application-id>")
spark.conf.set("fs.azure.account.oauth2.client.secret.<storage-account>.dfs.core.windows.net", service_credential)
spark.conf.set("fs.azure.account.oauth2.client.endpoint.<storage-account>.dfs.core.windows.net", "https://login.microsoftonline.com/<directory-id>/oauth2/token")
Menggantikan
<secret-scope>
dengan nama cakupan rahasia Databricks.<service-credential-key>
dengan nama kunci yang berisi rahasia klien.<storage-account>
dengan nama akun penyimpanan Azure.<application-id>
dengan ID Aplikasi (klien) untuk aplikasi ID Microsoft Entra.<directory-id>
dengan ID Direktori (penyewa) untuk aplikasi ID Microsoft Entra.
Token SAS
Anda dapat mengonfigurasi token SAS untuk beberapa akun penyimpanan dalam sesi Spark yang sama.
spark.conf.set("fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net", "SAS")
spark.conf.set("fs.azure.sas.token.provider.type.<storage-account>.dfs.core.windows.net", "org.apache.hadoop.fs.azurebfs.sas.FixedSASTokenProvider")
spark.conf.set("fs.azure.sas.fixed.token.<storage-account>.dfs.core.windows.net", dbutils.secrets.get(scope="<scope>", key="<sas-token-key>"))
Menggantikan
<storage-account>
dengan nama akun Azure Storage.<scope>
dengan nama cakupan rahasia Azure Databricks.<sas-token-key>
dengan nama kunci yang berisi token SAS penyimpanan Azure.
Kunci akun
spark.conf.set(
"fs.azure.account.key.<storage-account>.dfs.core.windows.net",
dbutils.secrets.get(scope="<scope>", key="<storage-account-access-key>"))
Menggantikan
<storage-account>
dengan nama akun Azure Storage.<scope>
dengan nama cakupan rahasia Azure Databricks.<storage-account-access-key>
dengan nama kunci yang berisi kunci akses akun penyimpanan Azure.
Mengakses penyimpanan Azure
Setelah mengonfigurasi kredensial dengan benar untuk mengakses kontainer penyimpanan Azure, Anda dapat berinteraksi dengan sumber daya di akun penyimpanan menggunakan URI. Databricks merekomendasikan penggunaan driver abfss
untuk keamanan yang lebih besar.
spark.read.load("abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/<path-to-data>")
dbutils.fs.ls("abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/<path-to-data>")
CREATE TABLE <database-name>.<table-name>;
COPY INTO <database-name>.<table-name>
FROM 'abfss://container@storageAccount.dfs.core.windows.net/path/to/folder'
FILEFORMAT = CSV
COPY_OPTIONS ('mergeSchema' = 'true');
Contoh notebook
Buku catatan perwakilan layanan ADLS Gen2 OAuth 2.0 dengan Microsoft Entra ID (sebelumnya Azure Active Directory)
Masalah umum Azure Data Lake Storage Gen2
Jika Anda mencoba mengakses kontainer penyimpanan yang dibuat melalui portal Azure, Anda mungkin menerima kesalahan berikut:
StatusCode=404
StatusDescription=The specified filesystem does not exist.
ErrorCode=FilesystemNotFound
ErrorMessage=The specified filesystem does not exist.
Saat namespace hierarki diaktifkan, Anda tidak perlu membuat kontainer melalui portal Azure. Jika Anda menjumpai masalah ini, hapus kontainer Blob melalui portal Azure. Setelah beberapa menit, Anda dapat mengakses kontainer. Jika tidak, Anda dapat mengubah URI abfss
untuk menggunakan kontainer yang berbeda, selama kontainer ini tidak dibuat melalui portal Azure.
Lihat Masalah umum seputar Azure Data Lake Storage Gen2 di dokumentasi Microsoft.
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.
Databricks tidak lagi merekomendasikan penggunaan passthrough kredensial dengan Azure Data Lake Storage Gen2. Lihat Mengakses Azure Data Lake Storage menggunakan passthrough kredensial ID Microsoft Entra (warisan).