自動加載程序文件通知模式是什麼?
在文件通知模式,自動加載程序自動設置通知服務和隊列服務訂閱文件事件從輸入目錄。您可以使用文件通知規模汽車裝載機攝取數以百萬計的文件一個小時。目錄清單模式相比,文件通知模式是更多的性能和可伸縮性大輸入目錄或大容量的文件,但需要額外雲權限。
你可以隨時切換文件通知和目錄清單,仍然保持隻有一次數據處理擔保。
雲資源用於自動加載程序文件通知模式
重要的
你需要提升權限自動配置文件通知模式的雲基礎設施。聯係你的雲管理員或工作區管理。看到的:
自動加載程序可以設置文件的通知你時自動設置選項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及以上的隻有當你提供一個服務主體沒有連接字符串。
將這個應用以下的角色分配給相關的資源組:
EventGrid EventSubscription貢獻者:這個角色是執行事件網格訂閱操作,如創建或清單事件訂閱。
有關更多信息,請參見分配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令牌時,必須提供以下權限:
所需的權限配置文件通知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的角色這些權限。
創建一個自定義穀歌雲我角色文件通知模式
在穀歌雲控製台相應項目中,導航到我&管理>角色
。然後,創建一個角色在頂部或更新現有的角色。在角色創建或編輯的屏幕中,單擊添加權限
。會出現一個菜單,您可以添加所需的權限角色。
手動配置或管理文件通知資源
特權用戶可以手動配置或管理文件通知資源。
手動設置文件通知服務通過雲提供商和手動指定隊列標識符。看到文件通知選項為更多的細節。
使用Scala api來創建或管理notifcations和排隊服務,如以下示例所示:
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / // /創建一個ResourceManager AWS/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /進口com。磚。sql。CloudFilesAWSResourceManager瓦爾經理=CloudFilesAWSResourceManager。新任。選項(“cloudFiles.region”,<地區>)/ /可選的,將使用默認的區域EC2實例。選項(“路徑”,<路徑- - - - - -來- - - - - -具體的- - - - - -桶- - - - - -和- - - - - -文件夾>)/ /隻需要setUpNotificationServices。創建()/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / // /創建一個ResourceManager Azure/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /進口com。磚。sql。CloudFilesAzureResourceManager瓦爾經理=CloudFilesAzureResourceManager。新任。選項(“cloudFiles.connectionString”,<連接- - - - - -字符串>)。選項(“cloudFiles.resourceGroup”,<資源- - - - - -集團>)。選項(“cloudFiles.subscriptionId”,<訂閱- - - - - -id>)。選項(“cloudFiles.tenantId”,<租戶- - - - - -id>)。選項(“cloudFiles.clientId”,<服務- - - - - -主要- - - - - -客戶端- - - - - -id>)。選項(“cloudFiles.clientSecret”,<服務- - - - - -主要- - - - - -客戶端- - - - - -秘密>)。選項(“路徑”,<路徑- - - - - -來- - - - - -具體的- - - - - -容器- - - - - -和- - - - - -文件夾>)/ /隻需要setUpNotificationServices。創建()/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / // /創建一個ResourceManager GCP/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /進口com。磚。sql。CloudFilesGCPResourceManager瓦爾經理=CloudFilesGCPResourceManager。新任。選項(“路徑”,<路徑- - - - - -來- - - - - -具體的- - - - - -桶- - - - - -和- - - - - -文件夾>)/ /隻需要setUpNotificationServices。。創建()/ /設置隊列和主題的訂閱中提供的路徑管理器。經理。setUpNotificationServices(<資源- - - - - -後綴>)/ /通知服務列表由< AL >瓦爾df=經理。listNotificationServices()/ /拆除通知服務創建為一個特定的ID。/ /流ID是一個GUID的字符串列表中,您可以找到結果。經理。tearDownNotificationServices(<流- - - - - -id>)
使用setUpNotificationServices (< resource-suffix >)
創建一個隊列和一個訂閱這個名字<前綴> - < resource-suffix >
(前綴取決於存儲係統進行了總結雲資源用於自動加載程序文件通知模式。如果有相同名稱的現有資源,磚重用現有的資源而不是創建一個新的。這個函數返回一個隊列標識符,你可以通過的cloudFiles
源使用的標識符文件通知選項。這使cloudFiles
源用戶權限的用戶比少創建資源。
提供“路徑”
選項新任
隻有當調用setUpNotificationServices
;它不需要listNotificationServices
或tearDownNotificationServices
。這是相同的路徑
你使用流運行時查詢。
下麵的矩陣表示支持API方法,磚運行時為每個類型的存儲:
雲存儲 |
安裝API |
列表API |
拆除API |
---|---|---|---|
AWS S3 |
所有版本 |
所有版本 |
所有版本 |
ADLS代 |
所有版本 |
所有版本 |
所有版本 |
GCS |
磚運行時9.1及以上 |
磚運行時9.1及以上 |
磚運行時9.1及以上 |
Azure Blob存儲 |
所有版本 |
所有版本 |
所有版本 |
ADLS Gen1 |
不支持的 |
不支持的 |
不支持的 |