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

Azure 流分析数据错误

数据错误发生在 Azure 流分析 处理您的流数据时。 这些错误最常发生在数据反序列化、序列化和写入操作期间。 发生数据错误时,流分析会将详细信息和示例事件写入资源日志。 在你的工作中启用诊断日志,获取这些额外细节。 在某些情况下,门户通知还会提供这些信息的摘要。

本文概述输入和输出数据错误的不同错误类型、原因和资源日志详细信息。

资源日志架构

要查看资源日志的架构,请参阅使用诊断日志排查 Azure 流分析问题。 以下 JSON 是资源日志中数据错误的 Properties 字段的示例值。

{
    "Source": "InputTelemetryData",
    "Type": "DataError",
    "DataErrorType": "InputDeserializerError.InvalidData",
    "BriefMessage": "JSON input stream should either be an array of objects or line separated objects. Found token type: Integer",
    "Message": "Input Message Id: https:\\/\\/exampleBlob.blob.core.windows.net\\/inputfolder\\/csv.txt Error: JSON input stream should either be an array of objects or line separated objects. Found token type: Integer",
    "ExampleEvents": "[\"1,2\\\\u000d\\\\u000a3,4\\\\u000d\\\\u000a5,6\"]",
    "FromTimestamp": "2019-03-22T22:34:18.5664937Z",
    "ToTimestamp": "2019-03-22T22:34:18.5965248Z",
    "EventCount": 1
}

输入数据错误

InputDeserializerError.InvalidCompressionType

  • 原因:你选择的输入压缩类型与数据不匹配。
  • 是否提供门户通知:是
  • 资源日志级别:警告
  • 影响:流分析会从输入中丢弃存在任何反序列化错误的消息,包括压缩类型无效的消息。
  • 日志详情:
    • 输入消息标识符。 对于 Azure 事件中心,标识符是 PartitionId、Offset 和 Sequence Number。

错误消息

"BriefMessage": "Unable to decompress events from resource 'https:\\/\\/exampleBlob.blob.core.windows.net\\/inputfolder\\/csv.txt'. Please ensure compression setting fits the data being processed."

InputDeserializerError.InvalidHeader

  • 原因:输入数据的标头无效。 例如,CSV 包含具有重复名称的列。
  • 提供的门户通知:是
  • 资源日志级别:警告
  • 影响:任何存在反序列化错误的消息(包括标头无效)都会从输入中被丢弃。
  • 日志详情:
    • 输入消息标识符。
    • 最大若干 KB 的实际有效负载。

错误消息

"BriefMessage": "Invalid CSV Header for resource 'https:\\/\\/exampleBlob.blob.core.windows.net\\/inputfolder\\/csv.txt'. Please make sure there are no duplicate field names."

输入反序列化错误.缺少列

  • 原因:使用 CREATE TABLE 或通过 TIMESTAMP BY 定义的输入列不存在。
  • 提供的门户通知:是
  • 资源日志级别:警告
  • 影响:将从输入中删除缺少列的事件。
  • 日志详情:
    • 输入消息标识符。
    • 缺失的列名称。
    • 实际有效负载最多可达几 KB。

错误消息

"BriefMessage": "Could not deserialize the input event(s) from resource 'https:\\/\\/exampleBlob.blob.core.windows.net\\/inputfolder\\/csv.txt' as Csv. Some possible reasons: 1) Malformed events 2) Input source configured with incorrect serialization format" 
"Message": "Missing fields specified in query or in create table. Fields expected:ColumnA Fields found:ColumnB"

输入反序列化程序错误.类型转换错误

  • 原因:Stream Analytics 无法将输入转换为在 CREATE TABLE 语句中指定的类型。
  • 提供的门户通知:是
  • 资源日志级别:警告
  • 影响:Stream Analytics 会从输入中丢弃带有类型转换错误的事件。
  • 日志详情:
    • 输入消息标识符。
    • 列名称和预期类型。

错误消息

"BriefMessage": "Could not deserialize the input event(s) from resource '''https:\\/\\/exampleBlob.blob.core.windows.net\\/inputfolder\\/csv.txt ' as Csv. Some possible reasons: 1) Malformed events 2) Input source configured with incorrect serialization format" 
"Message": "Unable to convert column: dateColumn to expected type."

输入反序列化错误.无效数据

  • 原因:输入数据格式不对。 例如,输入不是有效的 JSON。
  • 提供门户通知:是
  • 资源日志级别:警告
  • 影响:Stream Analytics 在遇到无效数据错误后,会删除消息中的所有事件。
  • 日志详情:
    • 输入消息标识符。
    • 实际有效负载最多可达数 KB。

错误消息

"BriefMessage": "JSON input stream should either be an array of objects or line separated objects. Found token type: String"
"Message": "JSON input stream should either be an array of objects or line separated objects. Found token type: String"

无效的输入时间戳

  • 原因:TIMESTAMP BY 表达式的值无法转换为日期时间。
  • 提供的门户通知:是
  • 资源日志级别:警告
  • 影响:将从输入中删除存在无效输入时间戳的事件。
  • 日志详情:
    • 输入消息标识符。
    • 错误消息。
    • 实际有效负载最多几千字节。

错误消息

"BriefMessage": "Unable to get timestamp for resource 'https:\\/\\/exampleBlob.blob.core.windows.net\\/inputfolder\\/csv.txt ' due to error 'Cannot convert string to datetime'"

InvalidInputTimeStampKey

  • 原因:TIMESTAMP BY OVER timestampColumn 的值为 NULL。
  • 提供的门户通知:是
  • 资源日志级别:警告
  • 影响:将从输入中删除存在无效输入时间戳键的事件。
  • 日志详情:
    • 实际有效负载最多为几千字节。

错误消息

"BriefMessage": "Unable to get value of TIMESTAMP BY OVER COLUMN"

LateInputEvent

  • 原因:申请时间与到达时间之间的时间差大于迟到容差时间窗口。
  • 是否提供门户通知:否
  • 资源日志级别:信息
  • 影响:将会根据作业配置的“事件排序”部分中的“处理其他事件”设置来处理延期输入事件。 更多信息请参见 时间处理政策
  • 日志详情:
    • 应用程序时间和抵达时间。
    • 实际负载最高可达几 KB。

错误消息

"BriefMessage": "Input event with application timestamp '2019-01-01' and arrival time '2019-01-02' was sent later than configured tolerance."

EarlyInputEvent

  • 原因:申请时间与到达时间之间的差距超过五分钟。
  • 提供的门户通知:否
  • 资源日志级别:信息
  • 影响:将会根据作业配置的“事件排序”部分中的“处理其他事件”设置来处理提前输入事件。 更多信息请参见 时间处理政策
  • 日志详情:
    • 应用程序时间和抵达时间。
    • 实际有效载荷最高可达几 KB。

错误消息

"BriefMessage": "Input event arrival time '2019-01-01' is earlier than input event application timestamp '2019-01-02' by more than 5 minutes."

OutOfOrderEvent

  • 原因:根据定义的乱序容忍窗口,该事件处于乱序状态。
  • 提供的门户通知:否
  • 资源日志级别:信息
  • 影响:该作业根据作业配置中事件排序部分的处理其他事件设置来处理乱序事件。 更多信息请参见 时间处理政策
  • 日志详情:
    • 实际有效负载最多为几 KB。

错误消息

"Message": "Out of order event(s) received."

输出数据错误

根据配置的不同,Azure 流分析可以在有或没有对输出接收器发出 I/O 请求的情况下识别输出数据错误。 例如,Stream Analytics 可以在使用 Azure Table 输出时识别缺失的必填列PartitionKey,而无需 I/O 请求。 但是,SQL 输出中的约束冲突确实需要 I/O 请求。

流分析只有在调用输出汇后才能检测到若干数据错误,这会减缓处理速度。 要解决这个问题,可以更改你工作的配置或导致数据错误的查询。

输出数据转换错误.缺少必需的列

  • 原因:输出所需的列不存在。 例如,定义为 Azure 表 PartitionKey 的列不存在。
  • 是否提供门户通知:是
  • 资源日志级别:警告
  • 影响: 输出数据策略 设置处理所有输出数据转换错误,包括缺少所需列。
  • 日志详情:
    • 列名称,以及记录标识符或记录部分。

错误消息

"Message": "The output record does not contain primary key property: [deviceId] Ensure the query output contains the column [deviceId] with a unique non-empty string less than '255' characters."

OutputDataConversionError.ColumnNameInvalid(输出数据转换错误:列名称无效)

  • 原因:列值不符合输出。 例如,列名称不是有效的 Azure 表列。
  • 是否提供门户通知:是
  • 资源日志级别:警告
  • 影响:将会根据输出数据策略设置处理所有输出数据转换错误,包括无效的列名称。
  • 日志详情:
    • 列名称,以及记录标识符或记录部分。

错误消息

"Message": "Invalid property name #deviceIdValue. Please refer MSDN for Azure table property naming convention."

OutputDataConversionError.TypeConversionError

  • 原因:列无法转换为输出中的有效类型。 例如,列的值与 SQL 表中定义的约束或类型不兼容。
  • 是否提供门户通知:是
  • 资源日志级别:警告
  • 影响:将会根据输出数据策略设置处理所有输出数据转换错误,包括类型转换错误。
  • 日志详情:
    • 列的名称。
    • 记录标识符或记录的一部分。

错误消息

"Message": "The column [id] value null or its type is invalid. Ensure to provide a unique non-empty string less than '255' characters."

输出数据转换错误.记录超出了大小限制

  • 原因:消息的值大于支持的输出大小。 例如,事件中心输出的记录大于1 MB。
  • 是否提供门户通知:是
  • 资源日志级别:警告
  • 影响:将会根据输出数据策略设置处理所有输出数据转换错误,包括记录超过大小限制。
  • 日志详情:
    • 记录标识符或记录的一部分。

错误消息

"BriefMessage": "Single output event exceeds the maximum message size limit allowed (262144 bytes) by Event Hub."

OutputDataConversionError.DuplicateKey

  • 原因:记录中已经包含与系统列同名的列。 例如,当 ID 列映射到其他列时,Azure Cosmos DB 输出包含一个名为 ID 的列。
  • 提供的门户通知:是
  • 资源日志级别:警告
  • 影响:所有输出数据转换错误(包括重复键)都将根据输出数据策略设置进行处理。
  • 日志详情:
    • 列的名称。
    • 记录标识符或其一部分。

错误消息

"BriefMessage": "Column 'devicePartitionKey' is being mapped to multiple columns."

后续步骤