Existe-t-il un moyen d'exécuter mon programme spark et d'être protégé des fichiers en cours de modification?Spark code à protéger de FileNotFoundExceptions?
Le code commence par la lecture d'un fichier parquet (pas d'erreurs lors de la lecture):
val mappings = spark.read.parquet(S3_BUCKET_PATH + "/table/mappings/")
Il fait ensuite des transformations avec l'exemple de données,
val newTable = mappings.join(anotherTable, 'id)
Ces transformations prennent des heures (ce qui est un autre problème).
Parfois, les finitions d'emploi, d'autres fois, il meurt avec le message similaire suivant:
org.apache.spark.SparkException: Job avorté en raison de l'échec de l'étape: Tâche 6 au stade 1014,0 a échoué 4 fois , échec le plus récent: tâche perdue 6.3 dans l'étape 1014.0 (TID 106820, 10.127.251.252, exécuteur 5): java.io.FileNotFoundException: Aucun fichier ou répertoire: s3a: // bucket1/table/mappings/part-00007 -21eac9c5-yyzz-4295-a6ef-5f3bb13bed64.snappy.parquet
Nous pensons qu'un autre travail consiste à changer les fichiers en dessous de nous, mais n'ont pas été en mesure de trouver le coupable.
essayez d'exécuter avec l'exécution spéculative. – philantrovert
Cela se produit lorsqu'un autre processus tente d'écrire/modifier des fichiers parquet dans ce répertoire. Assurez-vous de lire les fichiers après la fin d'un autre processus. –
Un autre problème à propos du travail à long terme, il est difficile de suggérer quelque chose sans la configuration de votre travail. –