Azure Blob存儲文件源Azure的隊列存儲(遺留)

重要的

這個文檔已經退休了,可能不會被更新。產品、服務或技術中提到的這些內容不再支持。看到自動加載器是什麼?

ABS-AQS連接器提供了一個優化的文件源使用Azure隊列存儲(aq)尋找新的文件寫入一個Azure Blob存儲(ABS)容器沒有反複清單的所有文件。這提供了兩個優點:

  • 低延遲:不需要列表嵌套在ABS目錄結構,這是緩慢和資源密集型的。

  • 降低成本:沒有更多的昂貴的ABS API請求列表。

請注意

ABS-AQS源從aq隊列刪除消息,因為它消耗的事件。如果你想要其他管道使用消息從這個隊列,設置一個單獨的aq隊列優化讀者。您可以設置多個事件網格訂閱發布到不同的隊列。

使用ABS-AQS文件來源

必須使用ABS-AQS文件來源:

  • 建立了ABS事件通知通過利用Azure事件他們aq網格訂閱和路線。看到對Blob存儲事件做出反應

  • 指定fileFormatqueueUrl選項和一個模式。例如:

    火花readStream\格式(“abs-aqs”)\選項(“fileFormat”,“json”)\選項(“queueName”,)\選項(“connectionString”,)\模式()\負載()

Azure的隊列存儲和Blob存儲進行身份驗證

驗證Azure的隊列存儲和Blob存儲,使用共享訪問或存儲賬戶簽名(SAS)牌鑰匙。你必須提供一個連接字符串存儲帳戶您的隊列在哪裏部署包含你的SAS令牌或訪問密鑰存儲賬戶。有關更多信息,請參見配置Azure存儲連接字符串

你還需要提供你的Azure Blob存儲容器。看到連接到數據存儲Gen2湖和Blob存儲Azure如何配置信息訪問Azure Blob存儲容器。

請注意

我們強烈建議您使用秘密提供你的連接字符串。

配置

選項

類型

默認的

描述

allowOverwrites

布爾

真正的

是否應該再加工一個blob被覆蓋。

connectionString

字符串

(沒有一個所需的參數)

連接字符串訪問您的隊列。

fetchParallelism

整數

1

數量的線程從隊列獲取消息時使用服務。

fileFormat

字符串

(沒有一個所需的參數)

文件的格式等拚花,json,csv,文本,等等。

ignoreFileDeletion

布爾

如果你有生命周期配置或者你手動刪除源文件,您必須設置這個選項真正的

maxFileAge

整數

604800年

決定了多長時間(以秒為單位)被存儲為文件通知狀態,以避免重複處理。

pathRewrites

一個JSON字符串。

“{}”

如果你使用掛載點,您可以重寫的前綴container@storageAccount /關鍵路徑與掛載點。隻有前綴可以重寫。例如,對於配置{“myContainer@myStorageAccount /路徑”:“dbfs: / mnt /數據倉庫工作”},路徑wasbs: / / myContainer@myStorageAccount.blob.windows.core.net/path/2017/08/fileA.json是重寫dbfs: / mnt /數據倉庫工作/ 2017/08 / fileA.json

queueFetchInterval

例如,一個時間字符串2米為2分鍾。

“5 s”

多長時間等待獲取之間如果隊列是空的。aq Azure指控/ API請求。因此,如果數據不經常到達,這個值可以設置為很長一段時間。隻要隊列非空,我們將不斷獲取。如果每5分鍾創建新的文件,您可能希望設置一個高queueFetchInterval降低aq成本。

queueName

字符串

(沒有一個所需的參數)

aq隊列的名稱。

如果你觀察很多消息看起來像司機日誌獲取0事件3事件。,你往往比新觀察更多的舊事件,你應該降低你的觸發間隔流。

如果你是使用文件從一個位置在Blob存儲您期望一些文件可能被刪除處理它們之前,你可以設置以下配置忽略錯誤並繼續進行處理:

火花sql(“設置spark.sql.files.ignoreMissingFiles = true”)

常見問題(FAQ)

如果ignoreFileDeletion是假的(默認)和對象已被刪除,它將整個管道失敗嗎?

是的,如果我們收到一個事件說明文件被刪除,它將失敗整個管道。

我該如何設置maxFileAge嗎?

Azure隊列存儲提供了“至少一次”消息傳遞語義,因此我們需要保持狀態的重複數據刪除。默認設置為maxFileAge是7天,等於最大TTL的消息隊列。