重要
Azure Synapse Analytics 数据资源管理器(预览版)将于 2025 年 10 月 7 日停用。 在此日期之后,Synapse 数据资源管理器上运行的工作负荷将被删除,关联的应用程序数据将丢失。 强烈建议迁移到 Microsoft Fabric 中的 Eventhouse 。
Microsoft云迁移工厂(CMF)计划旨在帮助客户迁移到 Fabric。 该计划向客户免费提供动手键盘资源。 这些资源在 6-8 周内分配,并具有预定义和同意的范围。 客户提名可以通过 Microsoft 帐户团队接受,或者直接提交《帮助请求》给 CMF 团队。
Azure 事件中心是大数据流式处理平台和事件引入服务。 Azure Synapse 数据探索器提供从由客户管理的事件中心持续摄取。
事件中心引入管道通过几个步骤将事件传输到 Azure Synapse 数据资源管理器。 首先在 Azure 门户中创建事件中心。 然后,在 Azure Synapse 数据资源管理器中创建目标表,其中 特定格式的数据将使用给定 的引入属性引入。 事件中心连接需要知道 事件路由。 数据根据 事件系统属性映射嵌入所选属性。 创建与事件中心的连接,以创建事件中心和发送事件。 可以通过 Azure 门户使用 C# 或 Python 以编程方式管理此过程,也可以使用 Azure 资源管理器模板来这样做。
有关 Azure Synapse 数据资源管理器中的数据引入的一般信息,请参阅 Azure Synapse 数据资源管理器数据引入概述。
数据格式
将以 EventData 对象的形式从事件中心读取数据。
请参阅支持的格式。
注释
事件中心不支持.raw格式。
可使用
GZip压缩算法来压缩数据。 指定Compression在引入属性中。- 压缩格式(Avro、Parquet、ORC)不支持数据压缩。
- 压缩数据不支持自定义编码和嵌入式 系统属性 。
摄入属性
引入属性会指示引入过程、数据路由到的位置以及数据处理方式。 可以使用 EventData.Properties 指定事件引入的引入属性。 可以设置以下属性:
| 资产 | Description |
|---|---|
| Table | 现有目标表的名称(区分大小写)。 替代 Table 窗格上设置的 Data Connection。 |
| Format | 数据格式。 替代 Data format 窗格上设置的 Data Connection。 |
| IngestionMappingReference | 要使用的现有数据导入映射的名称。 替代 Column mapping 窗格上设置的 Data Connection。 |
| Compression | 数据压缩、 None (默认值)或 GZip 压缩。 |
| 编码 | 数据编码,默认值为 UTF8。 可以是 .NET 支持的任何编码。 |
| 标记 | 与引入的数据关联的标记列表,格式为 JSON 数组字符串。 使用标记时存在性能影响。 |
注释
只有创建数据连接后进入队列的事件才会被引入。
事件路由
设置与 Azure Synapse 数据资源管理器群集的事件中心连接时,可以指定目标表属性(表名称、数据格式、压缩和映射)。 数据的默认路由也称为 static routing。
还可以使用事件属性为每个事件指定目标表属性。 连接将动态路由 EventData.Properties 中指定的数据,覆盖此事件的静态属性。
在以下示例中,设置事件中心详细信息并将天气指标数据发送到表 WeatherMetrics。
数据采用json格式。
mapping1 在表 WeatherMetrics上预定义 。
警告
此示例使用连接字符串身份验证连接到事件中心,以便简单起见。 然而,将连接字符串硬编码到脚本中需要对应用程序具有高度信任,并且存在安全风险。
对于安全的长期解决方案,请使用以下选项之一:
- 无密码身份验证
- 将连接字符串存储在 Azure Key Vault 中,并使用此方法在代码中检索此字符串。
var eventHubNamespaceConnectionString=<connection_string>;
var eventHubName=<event_hub>;
// Create the data
var metric = new Metric { Timestamp = DateTime.UtcNow, MetricName = "Temperature", Value = 32 };
var data = JsonConvert.SerializeObject(metric);
// Create the event and add optional "dynamic routing" properties
var eventData = new EventData(Encoding.UTF8.GetBytes(data));
eventData.Properties.Add("Table", "WeatherMetrics");
eventData.Properties.Add("Format", "json");
eventData.Properties.Add("IngestionMappingReference", "mapping1");
eventData.Properties.Add("Tags", "['mydatatag']");
// Send events
var eventHubClient = EventHubClient.CreateFromConnectionString(eventHubNamespaceConnectionString, eventHubName);
eventHubClient.Send(eventData);
eventHubClient.Close();
事件系统属性映射
系统属性存储事件中心服务在事件入队时设置的属性。 Azure Synapse 数据资源管理器事件中心的连接会将所选属性嵌入到落到你的表中的数据。
注释
系统属性
事件中心公开以下系统属性:
| 资产 | 数据类型 | Description |
|---|---|---|
| x-opt-enqueued-time | 日期/时间 | 将事件排队时的 UTC 时间 |
| x-opt-sequence-number | long | 事件中心的分区流中的事件逻辑序列号 |
| x-opt-offset | 字符串 | 事件中心分区流的偏移量。 在事件中心流的分区内,偏移标识符是唯一的。 |
| x-opt-publisher | 字符串 | 发布服务器名称(如果消息已发送到发布服务器终结点) |
| 分区键 (x-opt-partition-key) | 字符串 | 存储了事件的相应分区的分区键 |
如果在表的“数据源”部分中选择了“事件系统属性”,则必须在表架构和映射中包含这些属性。
架构映射示例
表架构映射示例
如果数据包含三列(Timespan、Metric 和 Value)并且包含的属性是 x-opt-enqueued-time 和 x-opt-offset,请使用以下命令创建或更改表架构:
.create-merge table TestTable (TimeStamp: datetime, Metric: string, Value: int, EventHubEnqueuedTime:datetime, EventHubOffset:string)
CSV 映射示例
运行以下命令,将数据添加到记录的开头。 记下序号值。
.create table TestTable ingestion csv mapping "CsvMapping1"
'['
' { "column" : "Timespan", "Properties":{"Ordinal":"2"}},'
' { "column" : "Metric", "Properties":{"Ordinal":"3"}},'
' { "column" : "Value", "Properties":{"Ordinal":"4"}},'
' { "column" : "EventHubEnqueuedTime", "Properties":{"Ordinal":"0"}},'
' { "column" : "EventHubOffset", "Properties":{"Ordinal":"1"}}'
']'
JSON 映射示例
使用系统属性映射添加数据。 运行以下命令:
.create table TestTable ingestion json mapping "JsonMapping1"
'['
' { "column" : "Timespan", "Properties":{"Path":"$.timestamp"}},'
' { "column" : "Metric", "Properties":{"Path":"$.metric"}},'
' { "column" : "Value", "Properties":{"Path":"$.value"}},'
' { "column" : "EventHubEnqueuedTime", "Properties":{"Path":"$.x-opt-enqueued-time"}},'
' { "column" : "EventHubOffset", "Properties":{"Path":"$.x-opt-offset"}}'
']'
事件中心连接
注释
为了获得最佳性能,请在 Azure Synapse 数据资源管理器群集所在的同一区域中创建所有资源。
创建事件中心
如果还没有 事件中心,请创建一个事件中心。 可以通过 Azure 门户、 使用 C# 或 Python 或 Azure 资源管理器模板以编程方式管理连接到事件中心。
注释
- 分区数量不可更改,因此在设置分区数量时应考虑长期扩展。
- 使用者组对于每个使用者来说必须独一无二。 创建专用于 Azure Synapse 数据资源管理器连接的使用者组。
发送事件
请参阅 生成数据并将其发送到事件中心的示例应用。
有关如何生成示例数据的示例,请参阅 将数据从事件中心引入 Azure Synapse 数据资源管理器
设置地理灾难恢复解决方案
事件中心提供 异地灾难恢复 解决方案。
Azure Synapse 数据资源管理器不支持 Alias 事件中心命名空间。 若要在解决方案中实现异地灾难恢复,请创建两个事件中心数据连接:一个用于主命名空间,一个用于辅助命名空间。 Azure Synapse 数据资源管理器将侦听两个事件中心连接。
注释
用户负责实现从主命名空间到辅助命名空间的切换。