Databricks Azure Queue Storage结构化流key not found错误排查
错误原因定位
你遇到的java.util.NoSuchElementException: key not found: eventType错误,是Spark ABS-AQS(Azure Blob Storage - Azure Queue Storage)流式连接器的强制校验规则导致的:
该连接器的设计逻辑是通过监听队列中的Blob变更事件来读取对应Blob文件里的业务数据,要求队列消息必须符合Azure Event Grid推送的Blob事件标准格式,必须携带eventType字段标识事件类型(常见取值为Microsoft.Storage.BlobCreated、Microsoft.Storage.BlobDeleted)。
触发该错误的常见场景有两个:
- 你当前队列中存储的是自定义业务数据,没有按照Event Grid标准事件结构生成消息,缺失必填的
eventType字段 - 你误用了ABS-AQS连接器:该连接器的作用是监听Blob变更、自动拉取对应Blob解析,不支持直接读取队列中存储的业务数据
修复方案
根据你的使用场景选择对应方案即可:
- 如果你的业务逻辑就是要直接读取队列中存储的停车位业务JSON数据:
替换abs-aqs格式的源,改用Azure Queue Storage专用的Spark流式连接器直接读取队列内容,按照你定义的业务Schema解析即可。 - 如果你确实要使用ABS-AQS连接器:
先配置Azure Event Grid规则,将目标Blob存储的变更事件推送到freeparkingplaces队列,业务数据存到Blob存储中,保证队列消息符合Event Grid标准结构,连接器会自动根据事件携带的Blob路径读取对应文件并按你定义的Schema解析。
内容的提问来源于stack exchange,提问作者patryk_ostrowski
相关产品推荐
相关产品推荐

