2017-07-25 4 views
2

Ich habe ein seltsames Problem mit einem U-SQL-Job, der gezippte Dateien verarbeiten. Wenn ich die U-SQL in einer normalen CSV-Datei ausführen, funktioniert es gut. Aber wenn ich die Datei gzip es mehr doenst arbeiten (eine E_RUNTIME_USER_EXTRACT_ENCODING_ERROR Erzeugung: Kodierungsfehler aufgetreten nach der Bearbeitung 0 Eintragung (en) im Scheitelpunkt‘Eingang Split.)U-SQL-Problem mit Gzip und virtuelle Spalte

So ist der Code, der

funktioniert, ist
DECLARE @path string = "output/{ids}/{*}.csv"; 

@data = 
    EXTRACT 
     a string, 
     b string, 
     c string, 
     d string, 
     ids string 
    FROM @path 
    USING 
     Extractors.Csv(skipFirstNRows:1, silent: true); 

@output = 
    SELECT * 
    FROM @data 
    WHERE ids == "test"; 

OUTPUT @output 
TO "output/res.csv" 
USING Outputters.Csv(quoting : false, outputHeader: true); 

Dieser Code funktioniert nicht (gz Version der Datei)

DECLARE @path string = "output/{ids}/{*}.csv.gz"; 

@data = 
    EXTRACT 
     a string, 
     b string, 
     c string, 
     d string, 
     ids string 
    FROM @path 
    USING 
     Extractors.Csv(skipFirstNRows:1, silent: true); 

@output = 
    SELECT * 
    FROM @data 
    WHERE ids == "test"; 

OUTPUT @output 
TO "output/res.csv" 
USING Outputters.Csv(quoting : false, outputHeader: true); 

Wenn ich remo ve das virtuelle Spalte „ids“ es funktioniert für die gz Version

DECLARE @path string = "output/test/{*}.csv.gz"; 

@data = 
    EXTRACT 
     a string, 
     b string, 
     c string, 
     d string 
    FROM @path 
    USING 
     Extractors.Csv(skipFirstNRows:1, silent: true); 

@output = 
    SELECT * 
    FROM @data; 

OUTPUT @output 
TO "output/res.csv" 
USING Outputters.Csv(quoting : false, outputHeader: true); 

Beigefügt sind die beiden Dateien die ich benutze. Hat jemand eine Ahnung was los ist? Wenn ich die virtuellen Spalten-IDs entferne, funktioniert es für beide? im Data See Lagerung

test.csv

test.csv.gz

ich nur diesen Fehler, wenn ich gegen die Datei ausführen. Wenn ich lokal gegen die Dateien arbeite, funktioniert es gut.

Die detaillierten Fehler I erhalten sind "internalDiagnostics": "" - "innerError": { "diagnosticCode": 195.887.128 - "Schwere": "Error" - "Komponente": "runtime" - "Quelle":“ Benutzer "-" errorId ":" E_RUNTIME_USER_EXTRACT_INVALID_CHARACTER "-" Nachricht ":" Ungültiges Zeichen für UTF-8-Codierung im Eingabestream. " - "description": "Ungültiges Zeichen für UTF-8-Codierung in Eingabe gefunden." - "Auflösung": "Korrigieren Sie das ungültige Zeichen in der Eingabedatei - oder korrigieren Sie die Codierung im Extraktor und versuchen Sie es erneut."

+0

Sind Sie lokal oder gegen Ihr Cloud-ADLA-Konto aktiv? Könnte es wert sein, beides zu versuchen, sehen Sie, ob Sie ein anderes Ergebnis bekommen. – wBob

+0

Ich habe beide Optionen ausprobiert.Ich führe das Skript in Visual Studio gegen die Dateien lokal auf der Festplatte (das funktioniert). Ich habe auch versucht, das Skript in Visual Studio gegen Dateien in meinem ADLA-Konto sowie im Azure-Portal auszuführen (beide Fehler). Scheint etwas mit den virtuellen Spalten zu sein. Wenn ich diese entferne, wie im letzten Beispiel gezeigt, funktioniert es in allen Fällen. – John

+0

Ich kann das nicht reproduzieren. Das zweite Skript funktioniert auf meinem lokalen und Cloud-ADLA-Konto einwandfrei. Welche Version der Tools verwenden Sie? Ich verwende 2.2.6000.1 mit Visual Studio 2015. Es könnte sich lohnen, das Skript über das Azure-Portal zu senden, das die Tools ausschließt, und schließlich eine Supportanfrage einreichen. – wBob

Antwort

1

Ich hatte genau das gleiche Problem. Scheint ein Fehler in der neuen Laufzeit für ADLA zu sein. MS arbeitet daran. Dieses Update war für mich:

SET @@FeaturePreviews = "FileSetV2Dot5:on"; 
4

Um einige zusätzliche das Problem hinzu:

  1. Dies war ein bestätigt Defekt. Wir haben eine Lösung für diesen Fall bereitgestellt, so dass Sie den Fehler nicht mehr mit oder ohne @@FeaturesPreview = "FileSetv2Dot5:on" Flag erhalten sollten.

  2. SET @@FeaturesPreview = "FileSetv2Dot5:on" Flag wie oben war die richtige Problemumgehung, da es einen anderen Plan erzwingt, wo der Fehler nicht vorhanden war.

  3. SET @@FeaturesPreview = "FileSetv2Dot5:on" ist immer noch standardmäßig deaktiviert.