自動加載程序文件通知模式是什麼?

在文件通知模式,自動加載程序自動設置通知服務和隊列服務訂閱文件事件從輸入目錄。您可以使用文件通知規模汽車裝載機攝取數以百萬計的文件一個小時。目錄清單模式相比,文件通知模式是更多的性能和可伸縮性大輸入目錄或大容量的文件,但需要額外雲權限。

你可以隨時切換文件通知和目錄清單,仍然保持隻有一次數據處理擔保。

雲資源用於自動加載程序文件通知模式

重要的

你需要提升權限自動配置文件通知模式的雲基礎設施。聯係你的雲管理員或工作區管理。看到的:

自動加載程序可以設置文件的通知你時自動設置選項cloudFiles.useNotifications真正的和提供必要的權限來創建雲資源。此外,您可能需要提供附加選項授予自動加載程序授權創建這些資源。

下麵的表總結了哪些資源是由自動加載程序。

雲存儲

訂閱服務

隊列服務

前綴*

限製* *

AWS S3

AWS SNS

AWS SQS

databricks-auto-ingest

每個S3 bucket 100

ADLS代

Azure事件網格

Azure隊列存儲

500每存儲賬戶

GCS

穀歌發布/訂閱

穀歌發布/訂閱

databricks-auto-ingest

每GCS 100桶

Azure Blob存儲

Azure事件網格

Azure隊列存儲

500每存儲賬戶

*自動加載程序的名字和這個前綴的資源。

* *有多少並發文件通知管道可以啟動

如果您需要運行超過有限數量的文件通知管道對於一個給定的存儲賬戶,您可以:

  • 考慮重構文件上傳到如何利用目錄清單模式增量清單而不是文件通知。

  • 利用服務如AWSλ,Azure函數,或穀歌雲函數從一個隊列,扇出通知聽整個容器或桶到目錄中特定的隊列。

文件通知事件

AWS S3提供了一個ObjectCreated事件當文件被上傳到S3 bucket無論把或多部分上傳上傳的。

ADLS Gen2提供不同的事件通知文件出現在您的代容器。

  • 自動加載程序監聽FlushWithClose事件處理一個文件。

  • 自動加載程序流創建磚8.3運行時和之後的支持RenameFile發現文件操作。RenameFile行動需要一個API請求存儲係統來重命名文件的大小。

  • 自動加載程序流創建磚9.0運行時和之後的支持RenameDirectory發現文件操作。RenameDirectory行動要求API請求存儲係統重命名目錄的內容列表。

穀歌雲存儲提供了一個OBJECT_FINALIZE事件當文件上傳,包括覆蓋和文件副本。上傳失敗不產生這個事件。

請注意

雲提供商並不能保證100%的交付文件事件在非常罕見的情況下,不提供嚴格sla文件的延遲事件。磚建議你觸發自動加載程序通過使用常規回填cloudFiles.backfillInterval可以保證所有文件被發現在一個給定的SLA如果數據完整性要求。觸發普通回填不會引起重複。

所需的權限配置文件通知ADLS Gen2和Azure Blob存儲

你必須讀輸入目錄的權限。看到Azure Blob存儲

要使用文件通知模式,您必須提供身份驗證憑證設置和訪問事件通知服務。在磚運行時8.1及以上的,你隻需要一個服務主體進行身份驗證。磚運行時的8.0及以下,您必須提供一個服務主體和一個連接字符串。

  • 服務主體——使用Azure內置的角色

    創建一個Active Directory Azure應用和服務主體客戶機ID的形式和客戶的秘密。

    這個應用以下角色分配給存儲賬戶輸入路徑所在:

    • 貢獻者:這個角色是建立資源存儲賬戶,如隊列和事件訂閱。

    • 存儲隊列數據來源:這個角色是執行隊列操作,比如檢索和刪除消息的隊列。這個角色需要在磚運行時8.1及以上的隻有當你提供一個服務主體沒有連接字符串。

    將這個應用以下的角色分配給相關的資源組:

    有關更多信息,請參見分配Azure角色使用Azure門戶

  • 服務主體——使用自定義的角色

    如果你關心execessive前麵的角色所需的權限,您可以創建一個自定義角色至少有以下權限,下麵列出在Azure角色JSON格式:

    “權限”:({“行動”:(“Microsoft.EventGrid / eventSubscriptions /寫”,“Microsoft.EventGrid / eventSubscriptions /讀”,“Microsoft.EventGrid / eventSubscriptions /刪除”,“Microsoft.EventGrid /地點/ eventSubscriptions /閱讀”,“Microsoft.Storage / storageAccounts /讀”,“Microsoft.Storage / storageAccounts /寫”,“Microsoft.Storage / storageAccounts / queueServices /閱讀”,“Microsoft.Storage / storageAccounts / queueServices /寫”,“Microsoft.Storage / storageAccounts / queueServices /隊列/寫”,“Microsoft.Storage / storageAccounts / queueServices /隊列/閱讀”,“Microsoft.Storage / storageAccounts / queueServices /隊列/刪除”),“notActions”:[],“dataActions”:(“Microsoft.Storage / storageAccounts / queueServices /隊列/信息/刪除”,“Microsoft.Storage / storageAccounts / queueServices /隊列/信息/讀”,“Microsoft.Storage / storageAccounts / queueServices /隊列/信息/寫”,“Microsoft.Storage / storageAccounts / queueServices /隊列/信息/過程/行動”),“notDataActions”:[]}]

    然後,您可以將這個自定義角色分配給應用程序。

    有關更多信息,請參見分配Azure角色使用Azure門戶

  • 連接字符串

    自動加載程序需要一個連接字符串驗證為Azure隊列存儲操作,如創建一個隊列,並閱讀和從隊列中刪除消息。創建隊列在同一個存儲賬戶輸入目錄路徑所在。你可以找到你的連接字符串賬戶關鍵共享訪問簽名(SAS)

    如果您使用的是磚運行時8.1或以上,你不需要一個連接字符串。

    如果您使用的是磚或低於8.0運行時,你必須提供一個連接字符串驗證為Azure隊列存儲操作,如創建一個隊列和檢索和從隊列中刪除消息。創建隊列在同一個存儲賬戶輸入路徑所在。你可以找到你的連接字符串賬戶關鍵共享訪問簽名(SAS)。配置一個SAS令牌時,必須提供以下權限:

自動加載程序權限

故障排除常見錯誤

錯誤:

javaRuntimeException:失敗的創建事件網格訂閱

如果你看到這個錯誤消息當您運行自動加載程序第一次事件網格不是注冊為資源提供者在Azure訂閱。注冊在Azure門戶:

  1. 去你的訂閱。

  2. 點擊資源提供者設置下一節。

  3. 注冊供應商Microsoft.EventGrid

錯誤:

403年被禁止的授權執行行動“Microsoft.EventGrid / eventSubscriptions /(讀|寫)範圍

如果你看到這個錯誤消息時自動加載程序第一次運行,確保你給了貢獻者角色的服務主體事件網格以及存儲賬戶。

所需的權限配置文件通知AWS S3

你必須讀輸入目錄的權限。看到S3連接細節為更多的細節。

使用文件通知模式,附上以下JSON政策文件給你我的用戶或角色

{“版本”:“2012-10-17”,“聲明”:({“席德”:“DatabricksAutoLoaderSetup”,“效應”:“允許”,“行動”:(“s3: GetBucketNotification”,“s3: PutBucketNotification”,“sns: ListSubscriptionsByTopic”,“sns: GetTopicAttributes”,“sns: SetTopicAttributes”,“sns: CreateTopic”,“sns: TagResource”,“sns:發布”,“sns:訂閱”,“sqs: CreateQueue”,“sqs: DeleteMessage”,“sqs: DeleteMessageBatch”,“sqs: ReceiveMessage”,“sqs: SendMessage”,“sqs: GetQueueUrl”,“sqs: GetQueueAttributes”,“sqs: SetQueueAttributes”,“sqs: TagQueue”,“sqs: ChangeMessageVisibility”,“sqs: ChangeMessageVisibilityBatch”),“資源”:(“攻擊:aws: s3::: < bucket名>”,“攻擊:aws: sqs: <地區>:<帳號>:databricks-auto-ingest - *”,“攻擊:aws: sns: <地區>:<帳號>:databricks-auto-ingest - *”]},{“席德”:“DatabricksAutoLoaderList”,“效應”:“允許”,“行動”:(“sqs: ListQueues”,“sqs: ListQueueTags”,“sns: ListTopics”),“資源”:“*”},{“席德”:“DatabricksAutoLoaderTeardown”,“效應”:“允許”,“行動”:(“sns:退訂”,“sns: DeleteTopic”,“sqs: DeleteQueue”),“資源”:(“攻擊:aws: sqs: <地區>:<帳號>:databricks-auto-ingest - *”,“攻擊:aws: sns: <地區>:<帳號>:databricks-auto-ingest - *”]}]}

地點:

  • < bucket名>:S3 bucket名稱流將讀取文件的地方,例如,自動對數。您可以使用*例如,作為一個通配符磚- *日誌。找出潛在的S3 bucket DBFS路徑,你可以列出所有的筆記本通過運行DBFS掛載點% fs掛載

  • <地區>:AWS S3 bucket所在地區,例如,us-west-2。如果你不想指定區域,使用*

  • <帳號>:擁有S3 bucket的AWS帳號,例如,123456789012。如果不想指定帳號,使用*

的字符串databricks-auto-ingest - *SQS和SNS是規範的名稱前綴cloudFiles源使用在創建SQS和SNS服務。因為磚設置通知服務在最初運行的流,您可以使用一個政策,減少權限在最初運行(例如,停止流,然後重新啟動它)。

請注意

之前的政策是隻關心所需的權限設置文件通知服務,即S3 bucket通知、SNS, SQS服務和假設您已經讀過訪問S3 bucket。如果你需要添加S3隻讀權限,添加以下的行動列表中DatabricksAutoLoaderSetup聲明在JSON文檔:

  • s3: ListBucket

  • s3: GetObject

初始設置後減少了權限

上麵描述的資源設置權限的初始運行期間隻需要流。第一次運行之後,您可以切換到以下我政策減少了權限。

重要的

減少了權限,你不能開始新的流媒體查詢在出現故障或重新創建資源(例如,SQS隊列已經不小心刪除);你也不能使用雲資源管理API或拆除資源列表。

{“版本”:“2012-10-17”,“聲明”:({“席德”:“DatabricksAutoLoaderUse”,“效應”:“允許”,“行動”:(“s3: GetBucketNotification”,“sns: ListSubscriptionsByTopic”,“sns: GetTopicAttributes”,“sns: TagResource”,“sns:發布”,“sqs: DeleteMessage”,“sqs: DeleteMessageBatch”,“sqs: ReceiveMessage”,“sqs: SendMessage”,“sqs: GetQueueUrl”,“sqs: GetQueueAttributes”,“sqs: TagQueue”,“sqs: ChangeMessageVisibility”,“sqs: ChangeMessageVisibilityBatch”),“資源”:(“攻擊:aws: sqs: <地區>:<帳號>:<隊列名稱>”,“攻擊:aws: sns: <地區>:<帳號>:<主題名稱>”,“攻擊:aws: s3::: < bucket名>”]},{“效應”:“允許”,“行動”:(“s3: GetBucketLocation”,“s3: ListBucket”),“資源”:(“攻擊:aws: s3::: < bucket名>”]},{“效應”:“允許”,“行動”:(“s3: propertynames”,“s3: PutObjectAcl”,“s3: GetObject”,“s3: DeleteObject”),“資源”:(“攻擊:aws: s3::: < bucket名> / *”]},{“席德”:“DatabricksAutoLoaderListTopics”,“效應”:“允許”,“行動”:(“sqs: ListQueues”,“sqs: ListQueueTags”,“sns: ListTopics”),“資源”:“攻擊:aws: sns: <地區>:<帳號>:*”}]}

需要為GCS權限配置文件通知

你必須有列表得到權限GCS桶上的所有對象。,穀歌文檔我的權限

使用文件通知模式,你需要添加的權限GCS服務帳戶和賬戶用於訪問穀歌雲Pub / Sub資源。

添加發布/訂閱出版商GCS服務帳戶的作用。這允許賬戶發布事件通知消息從你的GCS桶穀歌雲Pub / Sub。

至於服務帳戶用於穀歌雲Pub / Sub資源,您需要添加以下權限:

pubsub訂閱消費pubsub訂閱創建pubsub訂閱刪除pubsub訂閱得到pubsub訂閱列表pubsub訂閱更新pubsub主題attachSubscriptionpubsub主題創建pubsub主題刪除pubsub主題得到pubsub主題列表pubsub主題更新

要做到這一點,你可以創建一個我自定義的角色這些權限或分配預先存在的GCP的角色這些權限。

找到GCS服務帳戶

在穀歌雲控製台相應項目中,導航到存儲>設置。“雲存儲服務帳戶”一節包含GCS服務帳戶的電子郵件。

GCS服務帳戶

創建一個自定義穀歌雲我角色文件通知模式

在穀歌雲控製台相應項目中,導航到&管理>角色。然後,創建一個角色在頂部或更新現有的角色。在角色創建或編輯的屏幕中,單擊添加權限。會出現一個菜單,您可以添加所需的權限角色。

GCP我自定義角色

手動配置或管理文件通知資源

特權用戶可以手動配置或管理文件通知資源。

  • 手動設置文件通知服務通過雲提供商和手動指定隊列標識符。看到文件通知選項為更多的細節。

  • 使用Scala api來創建或管理notifcations和排隊服務,如以下示例所示:

請注意

你必須有適當的權限配置或修改雲基礎設施。看到權限的文檔Azure,S3,或GCS

/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / // /創建一個ResourceManager AWS/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /進口comsqlCloudFilesAWSResourceManager瓦爾經理=CloudFilesAWSResourceManager新任選項(“cloudFiles.region”,<地區>)/ /可選的,將使用默認的區域EC2實例選項(“路徑”,<路徑- - - - - -- - - - - -具體的- - - - - -- - - - - -- - - - - -文件夾>)/ /隻需要setUpNotificationServices創建()/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / // /創建一個ResourceManager Azure/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /進口comsqlCloudFilesAzureResourceManager瓦爾經理=CloudFilesAzureResourceManager新任選項(“cloudFiles.connectionString”,<連接- - - - - -字符串>)選項(“cloudFiles.resourceGroup”,<資源- - - - - -集團>)選項(“cloudFiles.subscriptionId”,<訂閱- - - - - -id>)選項(“cloudFiles.tenantId”,<租戶- - - - - -id>)選項(“cloudFiles.clientId”,<服務- - - - - -主要- - - - - -客戶端- - - - - -id>)選項(“cloudFiles.clientSecret”,<服務- - - - - -主要- - - - - -客戶端- - - - - -秘密>)選項(“路徑”,<路徑- - - - - -- - - - - -具體的- - - - - -容器- - - - - -- - - - - -文件夾>)/ /隻需要setUpNotificationServices創建()/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / // /創建一個ResourceManager GCP/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /進口comsqlCloudFilesGCPResourceManager瓦爾經理=CloudFilesGCPResourceManager新任選項(“路徑”,<路徑- - - - - -- - - - - -具體的- - - - - -- - - - - -- - - - - -文件夾>)/ /隻需要setUpNotificationServices。創建()/ /設置隊列和主題的訂閱中提供的路徑管理器。經理setUpNotificationServices(<資源- - - - - -後綴>)/ /通知服務列表由< AL >瓦爾df=經理listNotificationServices()/ /拆除通知服務創建為一個特定的ID。/ /流ID是一個GUID的字符串列表中,您可以找到結果。經理tearDownNotificationServices(<- - - - - -id>)

使用setUpNotificationServices (< resource-suffix >)創建一個隊列和一個訂閱這個名字<前綴> - < resource-suffix >(前綴取決於存儲係統進行了總結雲資源用於自動加載程序文件通知模式。如果有相同名稱的現有資源,磚重用現有的資源而不是創建一個新的。這個函數返回一個隊列標識符,你可以通過的cloudFiles源使用的標識符文件通知選項。這使cloudFiles源用戶權限的用戶比少創建資源。

提供“路徑”選項新任隻有當調用setUpNotificationServices;它不需要listNotificationServicestearDownNotificationServices。這是相同的路徑你使用流運行時查詢。

下麵的矩陣表示支持API方法,磚運行時為每個類型的存儲:

雲存儲

安裝API

列表API

拆除API

AWS S3

所有版本

所有版本

所有版本

ADLS代

所有版本

所有版本

所有版本

GCS

磚運行時9.1及以上

磚運行時9.1及以上

磚運行時9.1及以上

Azure Blob存儲

所有版本

所有版本

所有版本

ADLS Gen1

不支持的

不支持的

不支持的