Apa itu mode pemberitahuan file Auto Loader?
Dalam mode pemberitahuan file, Auto Loader secara otomatis menyiapkan layanan pemberitahuan dan layanan antrean yang berlangganan peristiwa file dari direktori input. Anda dapat menggunakan pemberitahuan file untuk menskalakan Auto Loader untuk menyerap jutaan file per jam. Jika dibandingkan dengan mode daftar direktori, mode pemberitahuan file lebih berkinerja dan dapat diskalakan untuk direktori input besar atau file dalam volume tinggi tetapi memerlukan izin cloud tambahan.
Anda dapat beralih antara pemberitahuan file dan daftar direktori kapan saja dan masih mempertahankan jaminan pemrosesan data sekali persis.
Catatan
Mode pemberitahuan file tidak didukung untuk akun penyimpanan premium Azure karena akun premium tidak mendukung penyimpanan antrean.
Peringatan
Mengubah jalur sumber untuk Auto Loader tidak didukung untuk mode pemberitahuan file. Jika mode pemberitahuan file digunakan dan jalur diubah, Anda mungkin gagal menyerap file yang sudah ada di direktori baru pada saat pembaruan direktori.
Sumber daya cloud yang digunakan dalam mode pemberitahuan file Auto Loader
Penting
Anda memerlukan izin yang ditingkatkan untuk mengonfigurasi infrastruktur cloud secara otomatis untuk mode pemberitahuan file. Hubungi administrator cloud atau admin ruang kerja Anda. Lihat:
Auto Loader dapat menyiapkan pemberitahuan file untuk Anda secara otomatis saat Anda mengatur opsi cloudFiles.useNotifications
ke true
dan memberikan izin yang diperlukan untuk membuat sumber daya cloud. Selain itu, Anda mungkin perlu memberikan opsi tambahan untuk memberikan otorisasi Auto Loader untuk membuat sumber daya ini.
Tabel berikut ini meringkas sumber daya mana yang dibuat oleh Auto Loader.
Penyimpanan cloud | Layanan Langganan | Layanan Antrean | Awalan* | Batas** |
---|---|---|---|---|
Amazon S3 | AWS SNS | AWS SQS | databricks-auto-ingest | 100 per wadah S3 |
ADLS Gen2 | Kisi Aktivitas Azure | Azure Queue Storage | databricks | 500 TB per akun penyimpanan |
GCS | Google Pub/Sub | Google Pub/Sub | databricks-auto-ingest | 100 per wadah GCS |
Azure Blob Storage | Kisi Aktivitas Azure | Azure Queue Storage | databricks | 500 TB per akun penyimpanan |
- Auto Loader memberi nama sumber daya dengan awalan ini.
** Berapa banyak alur pemberitahuan file bersamaan yang dapat diluncurkan
Jika Anda memerlukan menjalankan lebih dari jumlah terbatas alur pemberitahuan file untuk akun penyimpanan tertentu, Anda dapat:
- Manfaatkan layanan seperti AWS Lambda, Azure Functions, atau Google Cloud Functions untuk menyebarkan pemberitahuan dari satu antrean yang mendengarkan seluruh container atau bucket ke antrean khusus direktori.
Peristiwa pemberitahuan file
Amazon S3 menyediakan acara ObjectCreated
saat file diunggah ke bucket S3 terlepas dari apakah file tersebut diunggah melalui unggahan biasa atau unggahan multi-bagian.
ADLS Gen2 menyediakan pemberitahuan peristiwa yang berbeda untuk file yang muncul di kontainer Gen2 Anda.
- Auto Loader mendengarkan
FlushWithClose
peristiwa untuk memproses file. - Aliran Auto Loader mendukung
RenameFile
tindakan untuk menemukan file.RenameFile
tindakan memerlukan permintaan API ke sistem penyimpanan untuk mendapatkan ukuran file yang diganti namanya. - Aliran Auto Loader yang dibuat dengan Databricks Runtime 9.0 dan dukungan aksi sesudahnya
RenameDirectory
untuk menemukan file.RenameDirectory
tindakan memerlukan permintaan API ke sistem penyimpanan untuk mencantumkan konten direktori yang diganti namanya.
Google Cloud Storage menyediakan OBJECT_FINALIZE
acara saat file diunggah, yang mencakup menimpa dan menyalin file. Unggahan yang gagal tidak menghasilkan kejadian ini.
Catatan
Penyedia cloud tidak menjamin 100% pengiriman semua peristiwa file dalam kondisi yang sangat langka dan tidak memberikan SLA yang ketat tentang latensi peristiwa file. Databricks merekomendasikan agar Anda memicu pengisian ulang reguler dengan Auto Loader dengan menggunakan cloudFiles.backfillInterval
opsi untuk menjamin bahwa semua file ditemukan dalam SLA tertentu jika kelengkapan data adalah persyaratan. Memicu backfill reguler tidak menyebabkan duplikat.
Izin yang diperlukan untuk mengonfigurasi pemberitahuan file untuk ADLS Gen2 dan Azure Blob Storage
Anda harus memiliki izin baca untuk direktori input. Lihat Azure Blob Storage.
Untuk menggunakan mode pemberitahuan file, Anda harus memberikan kredensial autentikasi untuk menyiapkan dan mengakses layanan pemberitahuan peristiwa.
Anda dapat mengautentikasi menggunakan salah satu metode berikut:
- Kredensial layanan Databricks (disarankan): Buat kredensial layanan menggunakan identitas terkelola dan konektor akses Databricks.
- Pokok layanan: Buat aplikasi Microsoft Entra ID (sebelumnya Azure Active Directory) dan pokok layanan dalam bentuk ID klien dan rahasia klien.
Setelah mendapatkan kredensial autentikasi, tetapkan izin yang diperlukan ke konektor akses Databricks (untuk kredensial layanan) atau aplikasi ID Microsoft Entra (untuk perwakilan layanan).
Menggunakan peran bawaan Azure
Tetapkan konektor akses peran berikut ke akun penyimpanan tempat jalur input berada:
- Contributor: Peran ini untuk menyiapkan sumber daya di akun penyimpanan Anda, seperti antrean dan langganan peristiwa.
- Storage Queue Data Contributor: Peran ini untuk melakukan operasi antrean seperti mengambil dan menghapus pesan dari antrean. Peran ini diperlukan hanya ketika Anda menyediakan perwakilan layanan tanpa string koneksi.
Tetapkan konektor akses ini peran berikut ke grup sumber daya terkait:
- Kontributor untuk langganan event di EventGrid: Peran ini untuk melakukan operasi langganan di Azure Event Grid, seperti membuat atau mencantumkan langganan event.
Untuk informasi selengkapnya, lihat Menetapkan peran Azure menggunakan portal Azure.
Menggunakan peran kustom
Jika Anda khawatir dengan izin berlebihan yang diperlukan untuk peran sebelumnya, Anda dapat membuat Peran Kustom dengan setidaknya izin berikut, yang tercantum di bawah ini dalam format JSON peran Azure:
"permissions": [ { "actions": [ "Microsoft.EventGrid/eventSubscriptions/write", "Microsoft.EventGrid/eventSubscriptions/read", "Microsoft.EventGrid/eventSubscriptions/delete", "Microsoft.EventGrid/locations/eventSubscriptions/read", "Microsoft.Storage/storageAccounts/read", "Microsoft.Storage/storageAccounts/write", "Microsoft.Storage/storageAccounts/queueServices/read", "Microsoft.Storage/storageAccounts/queueServices/write", "Microsoft.Storage/storageAccounts/queueServices/queues/write", "Microsoft.Storage/storageAccounts/queueServices/queues/read", "Microsoft.Storage/storageAccounts/queueServices/queues/delete" ], "notActions": [], "dataActions": [ "Microsoft.Storage/storageAccounts/queueServices/queues/messages/delete", "Microsoft.Storage/storageAccounts/queueServices/queues/messages/read", "Microsoft.Storage/storageAccounts/queueServices/queues/messages/write", "Microsoft.Storage/storageAccounts/queueServices/queues/messages/process/action" ], "notDataActions": [] } ]
Kemudian, Anda dapat menetapkan peran kustom ini ke konektor akses Anda.
Untuk informasi selengkapnya, lihat Menetapkan peran Azure menggunakan portal Azure.
Izin yang diperlukan untuk mengonfigurasi pemberitahuan file untuk Amazon S3
Anda harus memiliki izin baca untuk direktori input. Lihat Detail koneksi S3 untuk detail selengkapnya.
Untuk menggunakan mode pemberitahuan file, lampirkan dokumen kebijakan JSON berikut ke pengguna atau peran IAM Anda. Peran IAM ini diperlukan untuk membuat kredensial layanan agar Auto Loader dapat diautentikasi.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DatabricksAutoLoaderSetup",
"Effect": "Allow",
"Action": [
"s3:GetBucketNotification",
"s3:PutBucketNotification",
"sns:ListSubscriptionsByTopic",
"sns:GetTopicAttributes",
"sns:SetTopicAttributes",
"sns:CreateTopic",
"sns:TagResource",
"sns:Publish",
"sns:Subscribe",
"sqs:CreateQueue",
"sqs:DeleteMessage",
"sqs:ReceiveMessage",
"sqs:SendMessage",
"sqs:GetQueueUrl",
"sqs:GetQueueAttributes",
"sqs:SetQueueAttributes",
"sqs:TagQueue",
"sqs:ChangeMessageVisibility",
"sqs:PurgeQueue"
],
"Resource": [
"arn:aws:s3:::<bucket-name>",
"arn:aws:sqs:<region>:<account-number>:databricks-auto-ingest-*",
"arn:aws:sns:<region>:<account-number>:databricks-auto-ingest-*"
]
},
{
"Sid": "DatabricksAutoLoaderList",
"Effect": "Allow",
"Action": [
"sqs:ListQueues",
"sqs:ListQueueTags",
"sns:ListTopics"
],
"Resource": "*"
},
{
"Sid": "DatabricksAutoLoaderTeardown",
"Effect": "Allow",
"Action": [
"sns:Unsubscribe",
"sns:DeleteTopic",
"sqs:DeleteQueue"
],
"Resource": [
"arn:aws:sqs:<region>:<account-number>:databricks-auto-ingest-*",
"arn:aws:sns:<region>:<account-number>:databricks-auto-ingest-*"
]
}
]
}
mana:
-
<bucket-name>
: Nama bucket S3 tempat streaming Anda akan membaca file, misalnyaauto-logs
. Anda dapat menggunakan*
sebagai kartubebas, misalnya,databricks-*-logs
. Untuk mengetahui bucket S3 yang mendasar untuk path DBFS Anda, Anda dapat mencantumkan semua titik pemasangan DBFS dalam notebook dengan menjalankan%fs mounts
. -
<region>
: Wilayah AWS tempat wadah S3 berada, misalnya,us-west-2
. Jika Anda tidak ingin menentukan wilayah, gunakan*
. -
<account-number>
: Nomor akun AWS yang memiliki wadah S3, misalnya,123456789012
. Jika tidak ingin menentukan nomor akun, gunakan*
.
String databricks-auto-ingest-*
dalam spesifikasi SQS dan SNS ARN adalah awalan nama yang cloudFiles
digunakan sumber saat membuat layanan SQS dan SNS. Karena Azure Databricks menyiapkan layanan pemberitahuan di awal stream, Anda dapat menggunakan kebijakan dengan izin yang dikurangi setelah menjalankan awal (misalnya, hentikan stream, lalu menghidupkan ulang).
Catatan
Kebijakan sebelumnya hanya berkaitan dengan izin yang diperlukan untuk menyiapkan layanan notifikasi file, yaitu layanan wadah pemberitahuan, SNS, dan SQS S3 dan menganggap Anda sudah memiliki akses baca ke wadah S3. Jika Anda perlu menambahkan izin baca-saja S3, tambahkan yang berikut ini ke daftar Action
dalam pernyataan DatabricksAutoLoaderSetup
dalam dokumen JSON:
s3:ListBucket
s3:GetObject
Izin berkurang setelah penyiapan awal
Izin penyiapan sumber daya yang dijelaskan di atas hanya diperlukan selama menjalankan stream awalan. Setelah eksekusi pertama, Anda dapat beralih ke kebijakan IAM berikut dengan izin yang dikurangi.
Penting
Dengan pengurangan izin, Anda tidak dapat memulai kueri streaming baru atau membuat ulang sumber daya jika terjadi kegagalan (misalnya, antrean SQS telah dihapus secara tidak sengaja); Anda juga tidak dapat menggunakan API manajemen sumber daya cloud untuk mencantumkan atau merobek sumber daya.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DatabricksAutoLoaderUse",
"Effect": "Allow",
"Action": [
"s3:GetBucketNotification",
"sns:ListSubscriptionsByTopic",
"sns:GetTopicAttributes",
"sns:TagResource",
"sns:Publish",
"sqs:DeleteMessage",
"sqs:ReceiveMessage",
"sqs:SendMessage",
"sqs:GetQueueUrl",
"sqs:GetQueueAttributes",
"sqs:TagQueue",
"sqs:ChangeMessageVisibility",
"sqs:PurgeQueue"
],
"Resource": [
"arn:aws:sqs:<region>:<account-number>:<queue-name>",
"arn:aws:sns:<region>:<account-number>:<topic-name>",
"arn:aws:s3:::<bucket-name>"
]
},
{
"Effect": "Allow",
"Action": [
"s3:GetBucketLocation",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::<bucket-name>"
]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:PutObjectAcl",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::<bucket-name>/*"
]
},
{
"Sid": "DatabricksAutoLoaderListTopics",
"Effect": "Allow",
"Action": [
"sqs:ListQueues",
"sqs:ListQueueTags",
"sns:ListTopics"
],
"Resource": "arn:aws:sns:<region>:<account-number>:*"
}
]
}
Izin yang diperlukan untuk mengonfigurasi pemberitahuan file untuk GCS
Anda harus memiliki list
dan get
izin pada wadah GCS Anda dan pada semua objek. Untuk mengetahui detailnya, lihat dokumentasi Google tentang izin IAM.
Untuk menggunakan mode pemberitahuan file, Anda perlu menambahkan izin untuk akun layanan GCS dan akun layanan yang digunakan untuk mengakses sumber daya Google Cloud Pub/Sub.
Tambahkan Pub/Sub Publisher
peran ke akun layanan GCS. Ini memungkinkan akun untuk memublikasikan pesan pemberitahuan peristiwa dari wadah GCS Anda ke Google Cloud Pub/Sub.
Sedangkan untuk akun layanan yang digunakan untuk sumber daya Google Cloud Pub/Sub, Anda perlu menambahkan izin berikut. Akun layanan ini secara otomatis dibuat saat Anda membuat kredensial layanan databricks .
pubsub.subscriptions.consume
pubsub.subscriptions.create
pubsub.subscriptions.delete
pubsub.subscriptions.get
pubsub.subscriptions.list
pubsub.subscriptions.update
pubsub.topics.attachSubscription
pubsub.topics.create
pubsub.topics.delete
pubsub.topics.get
pubsub.topics.list
pubsub.topics.update
Untuk melakukan ini, Anda dapat membuat peran kustom IAM dengan izin ini atau menetapkan peran GCP yang sudah ada sebelumnya untuk menutupi izin ini.
Menemukan Akun Layanan GCS
Di Google Cloud Console untuk proyek yang sesuai, navigasikan ke Cloud Storage > Settings
.
Bagian "Akun Layanan Penyimpanan Cloud" berisi email akun layanan GCS.
Membuat Cloud Google Kustom Peran IAM untuk Mode Pemberitahuan File
Di konsol Google Cloud untuk proyek yang sesuai, navigasikan ke IAM & Admin > Roles
. Kemudian, buat peran di bagian atas atau perbarui peran yang ada. Di layar untuk pembuatan atau pengeditan peran, klik Add Permissions
. Menu muncul di mana Anda dapat menambahkan izin yang diinginkan ke peran.
Mengonfigurasi atau mengelola sumber daya pemberitahuan file secara manual
Pengguna istimewa dapat mengonfigurasi atau mengelola sumber daya pemberitahuan file secara manual.
- Siapkan layanan pemberitahuan file secara manual melalui penyedia cloud dan tentukan pengidentifikasi antrean secara manual. Lihat Opsi pemberitahuan file untuk detail selengkapnya.
- Gunakan API Scala untuk membuat atau mengelola pemberitahuan dan layanan antrean, seperti yang ditunjukkan dalam contoh berikut:
Catatan
Anda harus memiliki izin yang sesuai untuk mengonfigurasi atau memodifikasi infrastruktur cloud. Lihat dokumentasi izin untuk Azure, S3, atau GCS.
Python
# Databricks notebook source
# MAGIC %md ## Python bindings for CloudFiles Resource Managers for all 3 clouds
# COMMAND ----------
#####################################
## Creating a ResourceManager in AWS
#####################################
# Using a Databricks service credential
manager = spark._jvm.com.databricks.sql.CloudFilesAWSResourceManager \
.newManager() \
.option("cloudFiles.region", <region>) \
.option("path", <path-to-specific-bucket-and-folder>) \
.option("databricks.serviceCredential", <service-credential-name>) \
.create()
# Using AWS access key and secret key
manager = spark._jvm.com.databricks.sql.CloudFilesAWSResourceManager \
.newManager() \
.option("cloudFiles.region", <region>) \
.option("cloudFiles.awsAccessKey", <aws-access-key>) \
.option("cloudFiles.awsSecretKey", <aws-secret-key>) \
.option("cloudFiles.roleArn", <role-arn>) \
.option("cloudFiles.roleExternalId", <role-external-id>) \
.option("cloudFiles.roleSessionName", <role-session-name>) \
.option("cloudFiles.stsEndpoint", <sts-endpoint>) \
.option("path", <path-to-specific-bucket-and-folder>) \
.create()
#######################################
## Creating a ResourceManager in Azure
#######################################
# Using a Databricks service credential
manager = spark._jvm.com.databricks.sql.CloudFilesAzureResourceManager \
.newManager() \
.option("cloudFiles.resourceGroup", <resource-group>) \
.option("cloudFiles.subscriptionId", <subscription-id>) \
.option("databricks.serviceCredential", <service-credential-name>) \
.option("path", <path-to-specific-container-and-folder>) \
.create()
# Using an Azure service principal
manager = spark._jvm.com.databricks.sql.CloudFilesAzureResourceManager \
.newManager() \
.option("cloudFiles.connectionString", <connection-string>) \
.option("cloudFiles.resourceGroup", <resource-group>) \
.option("cloudFiles.subscriptionId", <subscription-id>) \
.option("cloudFiles.tenantId", <tenant-id>) \
.option("cloudFiles.clientId", <service-principal-client-id>) \
.option("cloudFiles.clientSecret", <service-principal-client-secret>) \
.option("path", <path-to-specific-container-and-folder>) \
.create()
#######################################
## Creating a ResourceManager in GCP
#######################################
# Using a Databricks service credential
manager = spark._jvm.com.databricks.sql.CloudFilesGCPResourceManager \
.newManager() \
.option("cloudFiles.projectId", <project-id>) \
.option("databricks.serviceCredential", <service-credential-name>) \
.option("path", <path-to-specific-bucket-and-folder>) \
.create()
# Using a Google service account
manager = spark._jvm.com.databricks.sql.CloudFilesGCPResourceManager \
.newManager() \
.option("cloudFiles.projectId", <project-id>) \
.option("cloudFiles.client", <client-id>) \
.option("cloudFiles.clientEmail", <client-email>) \
.option("cloudFiles.privateKey", <private-key>) \
.option("cloudFiles.privateKeyId", <private-key-id>) \
.option("path", <path-to-specific-bucket-and-folder>) \
.create()
# Set up a queue and a topic subscribed to the path provided in the manager.
manager.setUpNotificationServices(<resource-suffix>)
# List notification services created by <AL>
from pyspark.sql import DataFrame
df = DataFrame(manager.listNotificationServices(), spark)
# Tear down the notification services created for a specific stream ID.
# Stream ID is a GUID string that you can find in the list result above.
manager.tearDownNotificationServices(<stream-id>)
Scala
/////////////////////////////////////
// Creating a ResourceManager in AWS
/////////////////////////////////////
import com.databricks.sql.CloudFilesAWSResourceManager
/**
* Using a Databricks service credential
*/
val manager = CloudFilesAWSResourceManager
.newManager
.option("cloudFiles.region", <region>) // optional, will use the region of the EC2 instances by default
.option("databricks.serviceCredential", <service-credential-name>)
.option("path", <path-to-specific-bucket-and-folder>) // required only for setUpNotificationServices
.create()
/**
* Using AWS access key and secret key
*/
val manager = CloudFilesAWSResourceManager
.newManager
.option("cloudFiles.region", <region>)
.option("cloudFiles.awsAccessKey", <aws-access-key>)
.option("cloudFiles.awsSecretKey", <aws-secret-key>)
.option("cloudFiles.roleArn", <role-arn>)
.option("cloudFiles.roleExternalId", <role-external-id>)
.option("cloudFiles.roleSessionName", <role-session-name>)
.option("cloudFiles.stsEndpoint", <sts-endpoint>)
.option("path", <path-to-specific-bucket-and-folder>) // required only for setUpNotificationServices
.create()
///////////////////////////////////////
// Creating a ResourceManager in Azure
///////////////////////////////////////
import com.databricks.sql.CloudFilesAzureResourceManager
/**
* Using a Databricks service credential
*/
val manager = CloudFilesAzureResourceManager
.newManager
.option("cloudFiles.resourceGroup", <resource-group>)
.option("cloudFiles.subscriptionId", <subscription-id>)
.option("databricks.serviceCredential", <service-credential-name>)
.option("path", <path-to-specific-container-and-folder>) // required only for setUpNotificationServices
.create()
/**
* Using an Azure service principal
*/
val manager = CloudFilesAzureResourceManager
.newManager
.option("cloudFiles.connectionString", <connection-string>)
.option("cloudFiles.resourceGroup", <resource-group>)
.option("cloudFiles.subscriptionId", <subscription-id>)
.option("cloudFiles.tenantId", <tenant-id>)
.option("cloudFiles.clientId", <service-principal-client-id>)
.option("cloudFiles.clientSecret", <service-principal-client-secret>)
.option("path", <path-to-specific-container-and-folder>) // required only for setUpNotificationServices
.create()
///////////////////////////////////////
// Creating a ResourceManager in GCP
///////////////////////////////////////
import com.databricks.sql.CloudFilesGCPResourceManager
/**
* Using a Databricks service credential
*/
val manager = CloudFilesGCPResourceManager
.newManager
.option("cloudFiles.projectId", <project-id>)
.option("databricks.serviceCredential", <service-credential-name>)
.option("path", <path-to-specific-bucket-and-folder>) // Required only for setUpNotificationServices.
.create()
/**
* Using a Google service account
*/
val manager = CloudFilesGCPResourceManager
.newManager
.option("cloudFiles.projectId", <project-id>)
.option("cloudFiles.client", <client-id>)
.option("cloudFiles.clientEmail", <client-email>)
.option("cloudFiles.privateKey", <private-key>)
.option("cloudFiles.privateKeyId", <private-key-id>)
.option("path", <path-to-specific-bucket-and-folder>) // Required only for setUpNotificationServices.
.create()
// Set up a queue and a topic subscribed to the path provided in the manager.
manager.setUpNotificationServices(<resource-suffix>)
// List notification services created by <AL>
val df = manager.listNotificationServices()
// Tear down the notification services created for a specific stream ID.
// Stream ID is a GUID string that you can find in the list result above.
manager.tearDownNotificationServices(<stream-id>)
Gunakan setUpNotificationServices(<resource-suffix>)
untuk membuat antrean dan langganan dengan nama <prefix>-<resource-suffix>
(awalan tergantung pada sistem penyimpanan yang dirangkum dalam sumber daya Cloud yang digunakan dalam mode pemberitahuan file Auto Loader. Jika ada sumber daya yang ada dengan nama yang sama, Azure Databricks menggunakan kembali sumber daya yang ada alih-alih membuat sumber daya baru. Fungsi ini mengembalikan pengidentifikasi antrean yang dapat Anda sampaikan ke sumber cloudFiles
menggunakan pengidentifikasi dalam opsi notifikasi file . Hal ini memungkinkan cloudFiles
pengguna sumber memiliki izin lebih sedikit daripada pengguna yang membuat sumber daya.
Berikan opsi "path"
ke newManager
hanya jika panggilan setUpNotificationServices
; tidak diperlukan untuk listNotificationServices
atau tearDownNotificationServices
. Ini path
yang sama yang Anda gunakan saat menjalankan kueri streaming.
Matriks berikut menunjukkan metode API mana yang didukung di mana Databricks Runtime untuk setiap jenis penyimpanan:
Penyimpanan cloud | Setup API | API Daftar | Hancurkan API |
---|---|---|---|
Amazon S3 | Semua versi | Semua versi | Semua versi |
ADLS Gen2 | Semua versi | Semua versi | Semua versi |
GCS | Databricks Runtime 9.1 ke atas | Databricks Runtime 9.1 ke atas | Databricks Runtime 9.1 ke atas |
Azure Blob Storage | Semua versi | Semua versi | Semua versi |
ADLS Gen1 | Tidak didukung | Tidak didukung | Tidak didukung |
Memecahkan masalah kesalahan umum
Bagian ini menjelaskan kesalahan umum saat menggunakan Auto Loader dengan mode pemberitahuan file dan cara mengatasinya.
Gagal membuat langganan Event Grid
Jika Anda melihat pesan kesalahan berikut saat menjalankan Auto Loader untuk pertama kalinya, Event Grid tidak terdaftar sebagai Penyedia Sumber Daya di langganan Azure.
java.lang.RuntimeException: Failed to create event grid subscription.
Untuk mendaftarkan Event Grid sebagai penyedia sumber daya, lakukan hal berikut:
- Di portal Microsoft Azure, buka langganan Anda.
- Klik Penyedia Sumber Daya di bawah bagian Pengaturan.
- Mendaftarkan penyedia
Microsoft.EventGrid
.
Otorisasi diperlukan untuk melakukan operasi langganan Event Grid
Jika Anda melihat pesan kesalahan berikut saat menjalankan Auto Loader untuk pertama kalinya, konfirmasikan bahwa peran Kontributor
403 Forbidden ... does not have authorization to perform action 'Microsoft.EventGrid/eventSubscriptions/[read|write]' over scope ...
Klien Event Grid melewati proksi
Di Databricks Runtime 15.2 ke atas, koneksi Event Grid di Auto Loader menggunakan pengaturan proksi dari properti sistem secara default. Di Databricks Runtime versi 13.3 LTS, 14.3 LTS, dan 15.0 sampai 15.2, Anda dapat secara manual mengonfigurasi koneksi Event Grid untuk menggunakan proksi dengan menetapkan properti Konfigurasi Sparkspark.databricks.cloudFiles.eventGridClient.useSystemProperties true
. Lihat Mengatur properti konfigurasi Spark di Azure Databricks.