Bagikan melalui


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:

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:

    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.

pengaturan izin untuk Auto Loader

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, misalnya auto-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.

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.

Peran Kustom GCP IAM

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:

  1. Di portal Microsoft Azure, buka langganan Anda.
  2. Klik Penyedia Sumber Daya di bawah bagian Pengaturan.
  3. 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 ditetapkan ke perwakilan layanan untuk Event Grid dan akun penyimpanan.

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.