你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

事件网格数据连接(预览版)

事件网格引入是用于侦听 Azure 存储并在订阅事件发生时更新 Azure 数据资源管理器以提取信息的管道。 数据资源管理器使用 Azure 事件网格订阅从 Azure 存储(Blob 存储和 ADLSv2)持续引入 Blob 创建或重命名通知,并通过事件中心将这些通知流式传输到数据资源管理器。

事件网格引入管道需要完成几个步骤。 在数据资源管理器中创建将引入特定格式数据的目标表。 然后在数据资源管理器中创建事件网格数据连接。 事件网格数据连接需要知道事件路由信息,例如要将数据发送到的表和表映射。 还可以指定引入属性,这些属性描述要引入的数据、目标表和映射。 可以生成示例数据并上传 blob重命名 blob 以测试连接。 在导入后删除 blob。 此过程可以通过 Azure 门户进行管理。

数据格式

  • 请参阅支持的格式
  • 请参阅支持的压缩
    • 原始未压缩的数据大小应为 Blob 元数据的一部分,否则数据资源管理器将对其进行估计。 每个文件的引入未压缩大小限制为 4 GB。

注意

可以在 BlobStorageStorageV2Data Lake Storage Gen2 的 Azure 存储帐户上设置事件网格通知订阅。

引入属性

可以通过 blob 元数据指定 blob 引入的引入属性。 可以设置以下属性:

属性 属性说明
rawSizeBytes 原始(未压缩的)数据的大小。 对于 Avro/ORC/Parquet,此值是应用特定于格式的压缩之前的大小。 请通过将此属性设置为未压缩数据大小(以字节为单位)来提供原始数据大小。
kustoTable 现有目标表的名称。 替代“Data Connection”边栏选项卡上设置的“Table”。
kustoDataFormat 数据格式。 替代“Data Connection”边栏选项卡上设置的“Data format”。
kustoIngestionMappingReference 要使用的现有引入映射的名称。 替代“Data Connection”边栏选项卡上设置的“Column mapping”。
kustoIgnoreFirstRecord 如果设置为 true,则 Kusto 将忽略 Blob 的第一行。 在表格格式数据(CSV、TSV 或类似格式)中使用将忽略标题。
kustoExtentTags 字符串,表示将附加到生成的盘区的标记
kustoCreationTime 替代 blob 的 $IngestionTime,格式为 ISO 8601 字符串。 用于回填。

事件路由

设置 Blob 存储与数据资源管理器群集的连接时,指定目标表属性:

  • 表名称
  • 数据格式
  • mapping

此设置是用于数据的默认路由,也称为 static routing。 还可以使用 blob 元数据指定每个 blob 的目标表属性。 将按照引入属性指定的方式动态路由数据。

以下示例演示如何在上传 blob 元数据之前对其设置引入属性。 Blob 路由到不同的表。

有关详细信息,请参阅上传 blob

// Blob is dynamically routed to table `Events`, ingested using `EventsMapping` data mapping
blob = container.GetBlockBlobReference(blobName2);
blob.Metadata.Add("rawSizeBytes", "4096‬"); // the uncompressed size is 4096 bytes
blob.Metadata.Add("kustoTable", "Events");
blob.Metadata.Add("kustoDataFormat", "json");
blob.Metadata.Add("kustoIngestionMappingReference", "EventsMapping");
blob.UploadFromFile(jsonCompressedLocalFileName);

上传 Blob

可以从本地文件创建 blob,将引入属性设置到 blob 元数据,然后上传它。 有关示例,请参阅通过订阅事件网格通知将 Blob 引入数据资源管理器

注意

  • 使用 BlockBlob 生成数据。 不支持 AppendBlob
  • 使用 Azure Data Lake Gen2 存储 SDK 需要使用 CreateFile 上传文件,最后使用 Flush 并将 close 参数设置为“true”。
  • 如果事件中心终结点未确认收到事件,Azure 事件网格将激活重试机制。 如果此重试发送失败,事件网格可以使用“死信”过程将未送达的事件发送给存储帐户。 有关详细信息,请参阅事件网格消息传递和重试

重命名 blob

使用 ADLSv2 时,可以重命名 Blob 以触发 Blob 向数据资源管理器的引入。 有关示例,请参阅通过订阅事件网格通知将 Blob 引入数据资源管理器

注意

  • 可以在 ADLSv2 中重命名目录,但不会触发“已重命名 blob”事件,也不会在目录中引入 blob。 若要在重命名后引入 blob,请直接重命名所需的 blob。
  • 如果在创建数据连接时定义了用于跟踪特定主题的筛选器。

使用存储生命周期删除 blob

数据资源管理器不会在引入 Blob 后删除它。 请使用 Azure Blob 存储生命周期来管理你的 blob 删除。 建议将 blob 保留三到五天。

已知事件网格问题

  • 使用数据资源管理器导出用于事件网格引入的文件时,请注意:
    • 如果提供给导出命令的连接字符串或提供给外部表的连接字符串是 ADLS Gen2 格式的连接字符串(例如 abfss://filesystem@accountname.dfs.core.windows.net),但没有为分层命名空间启用存储帐户,则不会触发事件网格通知。
    • 如果没有为分层命名空间启用该帐户,则连接字符串必须使用 Blob 存储格式(例如 )。 即使使用 ADLS Gen2 连接字符串,导出也可以按预期工作,但是不会触发通知,并且事件网格引入也不会进行。

后续步骤