Microsoft Fabric Eventhouse导入ADLS Gen2 JSON文件异常求助
问题描述
我们的需求是将存储在ADLS Gen2中的JSON文件导入Microsoft Fabric Eventhouse的KQL数据库。此前在完整的Azure Data Explorer(ADX)数据库中,通过数据连接+Event Grid/Event Hub的方案已实现端到端的持续更新,但Fabric Eventhouse不支持配置这类数据连接,改用数据管道的复制活动时遇到以下错误:
ErrorCode=KustoMappingReferenceHasWrongKind,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Mapping reference should be of kind 'Csv'. Mapping reference: 'HistoryRaw_EMR_New_mapping'. Kind 'Json'.,Source=Microsoft.DataTransfer.Runtime.KustoConnector,'
已提前创建KQL原始表及JSON类型的 ingestion mapping:
- 原始表Schema:
.create table HistoryRaw_EMR (CreatedUtc: datetime, TraceId: string, OktaUserId: string, TableName: string, HistoryTableNameId: int, ActionId: int, KeyValues: dynamic, FieldHistory: dynamic) - Ingestion Mapping:
.create-or-alter table ['HistoryRaw_EMR'] ingestion json mapping 'HistoryRaw_EMR_mapping' '[{"column":"CreatedUtc", "Properties":{"Path":"$.CreatedUtc"}},{"column":"TraceId", "Properties":{"Path":"$[\"TraceId\"]"}},{"column":"OktaUserId", "Properties":{"Path":"$[\"OktaUserId\"]"}},{"column":"TableName", "Properties":{"Path":"$[\"TableName\"]"}},{"column":"HistoryTableNameId", "Properties":{"Path":"$[\"HistoryTableNameId\"]"}},{"column":"ActionId", "Properties":{"Path":"$[\"ActionId\"]"}},{"column":"KeyValues", "Properties":{"Path":"$[\"KeyValues\"]"}},{"column":"FieldHistory", "Properties":{"Path":"$[\"FieldHistory\"]"}}]'
解决方案
1. 复制活动两端明确指定JSON格式
Fabric数据管道的Kusto连接器默认按CSV格式处理数据,需手动强制指定JSON格式:
- 源端配置:打开复制活动的「源」选项卡,在「格式」下拉框中选择「JSON」,根据你的文件结构勾选「多行JSON」(如果每个JSON对象占一行则取消勾选)。
- 目标端配置:切换到「目标」选项卡,同样将「数据格式」设为「JSON」;在「映射」区域选择「使用KQL ingestion映射」,然后选中已创建的
HistoryRaw_EMR_mapping。
2. 验证KQL映射的有效性
在Fabric的KQL查询编辑器中运行以下命令,确认映射的类型确实为JSON:
.show table HistoryRaw_EMR ingestion mappings
输出结果中需确保HistoryRaw_EMR_mapping的Kind字段值为Json。
3. 备选方案:直接调用KQL Ingest命令
如果复制活动仍存在格式识别问题,可改用数据管道的「KQL脚本活动」直接执行 ingestion 命令,绕过连接器的格式限制:
.ingest into table HistoryRaw_EMR ( h@'abfss://<容器名>@<存储账户名>.dfs.core.windows.net/<文件路径>/*.json' ) with ( format = 'json', ingestionMappingReference = 'HistoryRaw_EMR_mapping' )
注意需为Fabric的服务主体配置ADLS Gen2容器的读取权限。
额外说明
Fabric Eventhouse目前不支持ADX原生的Blob数据连接+事件触发自动 ingestion 机制,因此只能通过数据管道、事件流或Reflex触发导入操作。核心问题是复制活动的Kusto连接器默认格式为CSV,必须显式指定JSON格式才能关联已创建的JSON类型映射。
内容的提问来源于stack exchange,提问作者Matthew Buckleman
相关产品推荐
相关产品推荐

