能否在Azure Premium存储中使用Databricks Auto Loader文件通知模式?
问题描述
我希望使用Databricks Auto Loader读取文件流,由于数据量较大,且使用目录列表模式时延迟表现不佳,因此想要采用文件通知模式。但该模式需要的Storage Queues在Azure Premium存储中不可用,运行以下代码时出现错误:UnknownHostException: <storageName>.queue.core.windows.net
val manager = CloudFilesAzureResourceManager .newManager .option("cloudFiles.connectionString", "XXX") .option("cloudFiles.resourceGroup", "XXX") .option("cloudFiles.subscriptionId", "XXX") .option("cloudFiles.tenantId", "XXX") .option("cloudFiles.clientId", "XXX") .option("cloudFiles.clientSecret","XXX") .option("path", "abfss://XXX@ZZZ.dfs.core.windows.net/test") // required only for setUpNotificationServices .create() // Set up a queue and a topic subscribed to the path provided in the manager. manager.setUpNotificationServices("XXX")
请问是否有方法在Azure Premium存储中使用文件通知模式?
解决方案
使用独立标准存储账户托管队列资源
Azure Premium存储(如Block Blob Premium层)不支持队列服务,你可以单独创建一个通用v2类型的标准存储账户,用来承载文件通知所需的Storage Queue和Event Grid Topic。配置Auto Loader时,分别指定两个存储账户的信息:- 用
cloudFiles.connectionString指向Premium存储账户的连接串,负责文件读取 - 新增
cloudFiles.notificationQueueConnectionString参数,指向标准存储账户的连接串,负责托管通知队列
这种方式无需改动现有Premium存储架构,仅需新增一个低成本的标准存储账户即可实现低延迟的文件通知模式。
- 用
直接通过Event Grid推送事件到Databricks(推荐)
跳过Storage Queue,直接配置Azure Event Grid将Premium存储的文件变更事件推送至Databricks的Webhook端点:- 在Azure门户中为Premium存储账户创建Event Grid订阅,目标选择Webhook,填入Databricks Auto Loader生成的专用Webhook URL
- 在Auto Loader配置中启用
cloudFiles.useNotifications,并指定cloudFiles.eventGridTopicEndpoint等相关参数
该方式减少了中间依赖组件,延迟更低,完美适配Premium存储的限制。
注意:两种方案都需要确保Databricks服务主体拥有对应资源的权限,比如存储账户的Storage Blob Data Contributor、Event Grid的EventGrid EventSubscription Contributor等。
内容的提问来源于stack exchange,提问作者Rachel B
相关产品推荐
相关产品推荐

