데이터 오류는 Azure Stream Analytics가 스트리밍 데이터를 처리할 때 발생합니다. 이러한 오류는 주로 데이터 디직렬화, 직렬화, 쓰기 작업 중에 발생합니다. 데이터 오류가 발생하면 Stream Analytics이 자세한 정보 및 예시 이벤트를 리소스 로그에 작성합니다. 업무 중에 진단 로그를 활성화하여 이러한 추가 정보를 얻으세요. 경우에 따라 포털 알림은 이 정보를 요약해 주기도 합니다.
이 문서에서는 입력 및 출력 데이터 오류에 대한 다양한 오류 유형, 원인, 리소스 로그 세부 정보를 간략하게 설명합니다.
리소스 로그 스키마
리소스 로그의 스키마를 보시려면 '진단 로그를 이용한 Azure Stream Analytics 문제 해결'을 참고하세요. 다음 JSON은 데이터 오류에 대한 리소스 로그의 속성 필드에 대한 예시 값입니다.
{
"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
}
입력 데이터 오류
입력 디시리얼라이저 오류: 잘못된 압축 유형
- 원인: 선택한 입력 압축 유형이 데이터와 일치하지 않습니다.
- 제공된 포털 알림: 예
- 리소스 로그 수준: 경고
- 영향: 스트림 애널리틱스는 유효하지 않은 압축 형식을 포함하여 역직렬화 오류가 있는 모든 메시지를 입력에서 삭제합니다.
- 기록 세부사항:
- 입력 메시지 식별자. Azure Event Hubs의 경우 식별자는 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에 이름이 중복된 열이 있습니다.
- 제공된 포털 알림: 예
- 리소스 로그 수준: 경고
- 영향: 잘못된 헤더를 포함한 디직렬라이저 오류가 있는 메시지는 입력에서 삭제됩니다.
- 기록 세부사항:
- 입력 메시지 식별자.
- 실제 페이로드는 최대 몇 킬로바이트입니다.
오류 메시지
"BriefMessage": "Invalid CSV Header for resource 'https:\\/\\/exampleBlob.blob.core.windows.net\\/inputfolder\\/csv.txt'. Please make sure there are no duplicate field names."
InputDeserializerError.MissingColumns
- 원인:
CREATE TABLE또는TIMESTAMP BY을 통해 정의한 입력 열이 존재하지 않습니다. - 제공된 포털 알림: 예
- 리소스 로그 수준: 경고
- 영향: 누락된 열이 있는 이벤트는 입력에서 삭제됩니다.
- 기록 세부사항:
- 입력 메시지 식별자.
- 누락된 열의 이름.
- 실제 페이로드는 최대 몇 킬로바이트입니다.
오류 메시지
"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"
InputDeserializerError.TypeConversionError
- 원인: Stream Analytics가 입력값을 문장에서 지정한 유형으로 변환할 수 없습니다.
CREATE TABLE - 제공된 포털 알림: 예
- 리소스 로그 수준: 경고
- 영향: 스트림 애널리틱스는 입력에서 타입 변환 오류가 있는 이벤트를 삭제합니다.
- 기록 세부사항:
- 입력 메시지 식별자.
- 열의 이름 및 예상 형식.
오류 메시지
"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."
InputDeserializerError.InvalidData
- 원인: 입력 데이터가 올바른 형식이 아닙니다. 예를 들어, 입력이 유효한 JSON이 아닙니다.
- 제공된 포털 알림: 예
- 리소스 로그 수준: 경고
- 영향: Stream Analytics는 잘못된 데이터 오류를 만나면 메시지 내 모든 이벤트를 삭제합니다.
- 기록 세부사항:
- 입력 메시지 식별자.
- 실제 페이로드는 최대 몇 킬로바이트입니다.
오류 메시지
"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"
InvalidInputTimeStamp
- 원인: 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
- 원인: 적용 시간과 도착 시간의 차이가 지연 도착 허용 범위보다 큽니다.
- 포털 알림 제공: 아니요
- 리소스 로그 수준: 정보
- 영향: 지연 입력 이벤트는 작업 구성의 이벤트 순서 섹션에 있는 "다른 이벤트 처리" 설정에 따라 처리됩니다. 자세한 내용은 시간 처리 정책을 참조하세요.
- 기록 세부사항:
- 응용 프로그램 시간 및 도착 시간.
- 실제 페이로드는 최대 몇 킬로바이트입니다.
오류 메시지
"BriefMessage": "Input event with application timestamp '2019-01-01' and arrival time '2019-01-02' was sent later than configured tolerance."
초기입력이벤트
- 원인: 신청 시간과 도착 시간의 차이가 5분 이상 큽니다.
- 포털 알림 제공: 아니요
- 리소스 로그 수준: 정보
- 영향: 초기 입력 이벤트는 작업 구성의 이벤트 순서 섹션에 있는 "다른 이벤트 처리" 설정에 따라 처리됩니다. 자세한 내용은 시간 처리 정책을 참조하세요.
- 기록 세부사항:
- 응용 프로그램 시간 및 도착 시간.
- 실제 페이로드는 최대 몇 킬로바이트입니다.
오류 메시지
"BriefMessage": "Input event arrival time '2019-01-01' is earlier than input event application timestamp '2019-01-02' by more than 5 minutes."
OutOfOrderEvent
- 원인: 사건이 정의된 오차(out-of-order) 허용 범위에 따라 순서가 어긋난 경우.
- 포털 알림 제공: 아니요
- 리소스 로그 수준: 정보
- 영향: 작업은 작업 구성의 이벤트 순서 섹션에 있는 기타 이벤트 처리 설정에 따라 순서가 뒤바뀐 이벤트를 처리합니다. 자세한 내용은 시간 처리 정책을 참조하세요.
- 기록 세부사항:
- 실제 페이로드는 최대 몇 킬로바이트입니다.
오류 메시지
"Message": "Out of order event(s) received."
출력 데이터 오류
Azure Stream Analytics는 구성에 따라 출력 싱크에 대한 I/O 요청을 포함하거나 포함하지 않고 출력 데이터 오류를 식별할 수 있습니다. 예를 들어, Stream Analytics는 Azure Table 출력을 사용할 때 I/O 요청 없이도 누락된 필수 열(예: PartitionKey)을 식별할 수 있습니다. 그러나 SQL 출력의 제약 조건 위반에는 I/O 요청이 필요합니다.
스트림 애널리틱스는 출력 싱크를 호출한 후에야 여러 데이터 오류를 감지할 수 있어 처리 속도를 늦출 수 있습니다. 이 문제를 해결하려면 작업 설정이나 데이터 오류를 일으키는 쿼리를 변경하세요.
출력 데이터 변환 오류: 필수 열이 누락되었습니다
- 원인: 출력에 필요한 열이 없습니다. 예를 들어 Azure Table 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."
출력 데이터 변환 오류. 열 이름이 잘못되었습니다.
- 원인: 열 값이 출력과 일치하지 않습니다. 예를 들어, 열 이름은 유효한 Azure 테이블 열이 아닙니다.
- 제공된 포털 알림: 예
- 리소스 로그 수준: 경고
- 영향: 잘못된 열 이름을 포함한 모든 출력 데이터 변환 오류는 출력 데이터 정책 설정에 따라 처리됩니다.
- 기록 세부사항:
- 열 이름과 레코드 식별자 또는 레코드 내용의 일부.
오류 메시지
"Message": "Invalid property name #deviceIdValue. Please refer MSDN for Azure table property naming convention."
출력 데이터 변환 오류. 유형 변환 오류
- 원인: 열을 출력의 유효한 형식으로 변환할 수 없습니다. 예를 들어, 열 값이 SQL 테이블에 정의된 제약 조건 또는 형식과 호환되지 않습니다.
- 제공된 포털 알림: 예
- 리소스 로그 수준: 경고
- 영향: 형식 변환 오류를 포함한 모든 출력 데이터 변환 오류는 출력 데이터 정책 설정에 따라 처리됩니다.
- 기록 세부사항:
- 열의 이름입니다.
- 레코드 식별자 또는 레코드의 일부.
오류 메시지
"Message": "The column [id] value null or its type is invalid. Ensure to provide a unique non-empty string less than '255' characters."
출력 데이터 변환 오류: 기록 크기 제한 초과
- 원인: 메시지 값이 지원되는 출력 크기보다 큰 경우. 예를 들어, 이벤트 허브 출력의 레코드가 1MB보다 큰 경우입니다.
- 제공된 포털 알림: 예
- 리소스 로그 수준: 경고
- 영향: 레코드 초과 크기 제한을 포함한 모든 출력 데이터 변환 오류는 출력 데이터 정책 설정에 따라 처리됩니다.
- 기록 세부사항:
- 레코드 식별자 또는 레코드의 일부.
오류 메시지
"BriefMessage": "Single output event exceeds the maximum message size limit allowed (262144 bytes) by Event Hub."
OutputDataConversionError.DuplicateKey
- 원인: 레코드에 이미 시스템 컬럼과 같은 이름을 가진 열이 포함되어 있습니다. 예를 들어, Azure Cosmos DB는 ID 컬럼이 다른 컬럼에 있을 때 ID라는 이름의 컬럼을 출력합니다.
- 제공된 포털 알림: 예
- 리소스 로그 수준: 경고
- 영향: 중복 키를 비롯 한 모든 출력 데이터 변환 오류는 출력 데이터 정책 설정에 따라 처리됩니다.
- 기록 세부사항:
- 열의 이름입니다.
- 레코드 식별자 또는 레코드의 일부.
오류 메시지
"BriefMessage": "Column 'devicePartitionKey' is being mapped to multiple columns."