web-dev-qa-db-fra.com

Limite de mémoire de l'exécuteur AWS Glue

J'ai constaté qu'AWS Glue avait configuré l'instance de l'exécuteur avec une limite de mémoire limitée à 5 Gb --conf spark.executor.memory=5g et parfois, sur un gros jeu de données, elle échouait avec Java.lang.OutOfMemoryError. Il en va de même pour l'instance de pilote --spark.driver.memory=5g. Existe-t-il une option pour augmenter cette valeur?

6
Alexey Bakulin

La documentation officielle sur la colle suggère que la colle ne prend pas en charge la configuration personnalisée des étincelles.

AWS Glue utilise également plusieurs noms d'arguments en interne, à savoir vous ne devriez jamais régler:

--conf - interne à AWS Glue. Ne pas fixer!

--debug - interne à AWS Glue. Ne pas fixer!

--mode - interne à AWS Glue. Ne pas fixer!

--JOB_NAME - interne à AWS Glue. Ne pas fixer!

Une meilleure suggestion pour résoudre ce problème?

1
rileyss
  1. Ouvrez Glue> Travaux> Modifiez votre travail> Bibliothèques de scripts et paramètres de travail (facultatif)> Paramètres de travail proches du bas
  2. Définissez les éléments suivants: clé: --conf valeur: spark.yarn.executor.memoryOverhead = 1024 spark.driver.memory = 10g
2
ashutosh singh

Vous pouvez remplacer les paramètres en modifiant le travail et en ajoutant des paramètres de travail. La clé et la valeur que j'ai utilisées sont ici:

Clé : --conf

Valeur : spark.yarn.executor.memoryOverhead = 7g

Cela semblait contre-intuitif puisque la clé de réglage est en réalité dans la valeur, mais elle a été reconnue. Donc, si vous essayez de définir spark.yarn.executor.memory, le paramètre suivant sera approprié:

Clé : --conf

Valeur : spark.yarn.executor.memory = 7g

2
Kris Bravo

J'ai eu des erreurs de mémoire telles que celle-ci quand j'avais un jeu de données très asymétrique. Dans mon cas, j'avais un panier de fichiers json contenant des charges utiles dynamiques différentes en fonction du type d'événement indiqué dans le fichier json. J'ai continué à frapper des erreurs de mémoire insuffisante, peu importe si j'avais utilisé les drapeaux de configuration indiqués ici et augmenté le nombre de DPU. Il s'est avéré que mes événements étaient fortement biaisés: deux types d'événements représentant plus de 90% de l'ensemble des données. Une fois que j'ai ajouté un "sel" aux types d'événements et divisé les données très asymétriques, je n'ai rencontré aucune erreur de mémoire insuffisante.

Voici un article de blog pour AWS EMR qui parle de la même erreur de mémoire insuffisante avec des données très asymétriques. https://medium.com/thron-tech/optimising-spark-rdd-pipelines-679b41362a8a

1
Zambonilli