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的消息队列。