2017-07-25 3 views
2

J'ai un problème étrange avec un travail u-sql qui traite les fichiers compressés. Si je lance l'u-sql sur un fichier csv normal cela fonctionne très bien. Mais si je GZip le fichier qu'il doenst fonctionne plus (générant un E_RUNTIME_USER_EXTRACT_ENCODING_ERROR: erreur d'encodage est survenue après traitement 0 enregistrement (s) à Split d'entrée du sommet.)Problème d'u-sql utilisant gzip et colonne virtuelle

Ainsi, le code qui fonctionne est

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); 

Ce code ne fonctionne pas (version gz du fichier)

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); 

Si je remo ve la colonne virtuelle « ids » cela fonctionne pour la version gz

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); 

Ci-joint les deux fichiers que je utilise. Quelqu'un at-il une idée de ce qui se passe? Si je supprime les identifiants de colonne virual cela fonctionne pour les deux?

test.csv

test.csv.gz

-je obtenir que cette erreur quand je lance contre le fichier dans le lac de stockage des données. Si je cours localement contre les fichiers cela fonctionne bien.

L'erreur détaillée que je reçois est "internalDiagnostics": "" - "innerError": { "diagnosticCode": 195887128 - "gravité": "Erreur" - "composant": "RUNTIME" - "source": » Utilisateur "-" errorId ":" E_RUNTIME_USER_EXTRACT_INVALID_CHARACTER "-" message ":" Caractère non valide pour le codage UTF-8 dans le flux d'entrée. " - "description": "caractère non valide trouvé pour le codage UTF-8 en entrée." - "résolution": "Corrigez le caractère invalide dans le fichier d'entrée - ou corrigez le codage dans l'extracteur et réessayez."

+0

Cela vaut la peine d'essayer les deux, voyez si vous obtenez un résultat différent. – wBob

+0

J'ai essayé les deux options.Je cours le script dans Visual Studio contre les fichiers localement sur le disque (ceci fonctionne). J'ai également essayé d'exécuter le script dans Visual Studio par rapport aux fichiers de mon compte ADLA ainsi que dans le portail Azure (tous les deux échouent). Semble être quelque chose avec les colonnes virtuelles. Si je les supprime comme indiqué dans le dernier exemple, cela fonctionne dans tous les cas. – John

+0

Je ne peux pas reproduire ceci. Le deuxième script fonctionne parfaitement sur mon compte ADLA local et cloud. Quelle version des outils utilisez-vous? J'utilise 2.2.6000.1 avec Visual Studio 2015. Cela peut valoir la peine de soumettre le script via le portail Azure qui exclurait les outils, enfin envisager de soumettre une demande de support. – wBob

Répondre

1

J'avais exactement le même problème. Semble être un bug dans le nouveau runtime pour ADLA. MS travaille dessus. Ce correctif a fonctionné pour moi:

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

Pour ajouter un peu la question supplémentaire:

  1. Ce fut un défaut confirmé. Nous avons déployé un correctif pour cela, vous ne devriez donc plus le rencontrer, avec ou sans le drapeau @@FeaturesPreview = "FileSetv2Dot5:on". Comme indiqué ci-dessus, la solution de contournement correcte était la suivante: elle forcerait la génération d'un plan différent là où le défaut n'existait pas.

  2. SET @@FeaturesPreview = "FileSetv2Dot5:on" est toujours désactivé par défaut. Etes-vous en cours d'exécution localement ou contre votre compte ADLA dans le cloud?