Ich habe eine einfache Synapse-Pipeline, die Daten aus einer SQL Server-Tabelle in eine Parquet-Datei im Blob-Speicher verschiebt. Beim Ausführen der Pipeline schlägt sie mit der folgenden Fehlermeldung fehl:
{
"dataRead": 45,
"dataWritten": 0,
"filesWritten": 0,
"sourcePeakConnections": 1,
"sinkPeakConnections": 1,
"rowsRead": 1,
"rowsCopied": 1,
"copyDuration": 4,
"throughput": 0.011,
"errors": [
{
"Code": 21018,
"Message": "ErrorCode=ParquetInvalidColumnName,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=The column name is invalid. Column name cannot contain these character:[,;{}()\\n\\t=],Source=Microsoft.DataTransfer.Common,'",
"EventType": 0,
"Category": 5,
"Data": {},
"MsgId": null,
"ExceptionType": null,
"Source": null,
"StackTrace": null,
"InnerEventInfos": []
}
],
"effectiveIntegrationRuntime": "AutoResolveIntegrationRuntime (UK South)",
"usedDataIntegrationUnits": 4,
"billingReference": {
"activityType": "DataMovement",
"billableDuration": [
{
"meterType": "AzureIR",
"duration": 0.06666666666666667,
"unit": "DIUHours"
}
]
},
"usedParallelCopies": 1,
"executionDetails": [
{
"source": {
"type": "AzureSqlDatabase",
"region": "UK South"
},
"sink": {
"type": "AzureBlobFS",
"region": "UK South"
},
"status": "Failed",
"start": "2022-03-25T09:50:19.7461477Z",
"duration": 4,
"usedDataIntegrationUnits": 4,
"usedParallelCopies": 1,
"profile": {
"queue": {
"status": "Completed",
"duration": 2
},
"transfer": {
"status": "Completed",
"duration": 1,
"details": {
"readingFromSource": {
"type": "AzureSqlDatabase",
"workingDuration": 0,
"timeToFirstByte": 0
},
"writingToSink": {
"type": "AzureBlobFS",
"workingDuration": 0
}
}
}
},
"detailedDurations": {
"queuingDuration": 2,
"timeToFirstByte": 0,
"transferDuration": 1
}
}
],
"dataConsistencyVerification": {
"VerificationResult": "NotVerified"
},
"durationInQueue": {
"integrationRuntimeQueue": 0
}
}
Zur Verdeutlichung enthält keiner der Tabellenspaltennamen tatsächlich "ungültige Zeichen". Sie sind alle nur AZ, kein Leerzeichen. Außerdem hat die Pipeline etwa 3 GB Daten verschoben, bevor sie ausfiel. Wenn ich die SQL-Abfrage ändere, um 10 Millionen Zeilen statt 72 Millionen Zeilen abzurufen, läuft die Pipeline einwandfrei.
Ich denke, die Fehlermeldung ist falsch, und dies schlägt tatsächlich fehl, weil etwas mit Daten zu tun hat. Gibt es keine erweiterten Debugging-Optionen in der Synapse-Pipeline, mit denen ich feststellen kann, wo / warum dies fehlschlägt?
Lösung des Problems
- Gemäß diesem Github- Link besteht die Lösung für diese Art von Problem darin, die Spaltenzuordnung hinzuzufügen oder zu ändern, um den Namen der Senkenspalte gültig zu machen.
- Auch Leerraum ist im Parkettformat nicht erlaubt. Bitte beachten Sie den Hinweis im folgenden Dokument.
Parquet-Format in Azure Data Factory und Azure Synapse Analytics. - Einige Problemumgehungen für diesen Fehler können diesem SO-Thread entnommen werden.
Keine Kommentare:
Kommentar veröffentlichen