J'utilise le fichier de configuration conformément aux guides Configurer Spark pour configurer la configuration EMR sur AWS, par exemple, la modification de spark.executor.extraClassPath
se fait via les paramètres suivants:
{ "Classification": "spark-defaults", "Properties": { "spark.executor.extraClassPath": "{$extraClassPath}:/home/hadoop/mongo-hadoop-spark.jar", } }
Cela fonctionne parfaitement et changez spark.executor.extraClassPath
sur emr spark conf, mais emr a des chemins par défaut prédéfinis dans spark.executor.extraClassPath
, donc au lieu d'écraser le spark.executor .extraClassPath
.Je voudrais savoir s'il existe un moyen d'ajouter le chemin et de conserver les chemins par défaut tels que
{ "Classification": "spark-defaults", "Properties": { "spark.executor.extraClassPath": "/home/hadoop/mongo-hadoop-spark.jar", } }
3 Réponses :
Spécification du chemin complet pour tous les pots supplémentaires pendant que Job sumit fonctionnera pour vous.
- pots
Cette option soumettra ces fichiers jars à tous les exécuteurs et ne changera pas le chemin de classe supplémentaire par défaut
Une autre option que je connais mais je ne l'ai essayée qu'avec Yarn conf, je ne suis pas sûr de l'EMR
./bin/spark-submit --class "SparkTest" --master local [*] --jars /fullpath/first.jar,/fullpath/second.jar /fullpath/your-program.jar
L'ajout de --jars
aide le cas lors de la soumission du travail Spark, alors que nous utilisons également notebook qui prend Spark conf pour la configuration du notebook.
Avec notebook, vous parlez de configuration locale pour le développement?
Non, cahier intégré emr, qui est une option sélectionnable pour la configuration emr.
Vous pouvez mettre "spark.jars" dans spark-defaults.conf
donc même si vous utilisez notebook, cette configuration sera utilisée. J'espère que cela résoudra votre problème
J'ai essayé {"Classification": "spark-defaults", "Properties": {"spark.jars": "/home/hadoop/mongo-hadoop-spark.jar",}} ne fonctionne pas
et j'ai essayé {"Classification": "spark-defaults", "Properties": {"spark.jars": ["/home/hadoop/mongo-hadoop-spark.jar"],} échoué avec quand j'essaye de créer un cluster.
Vous pouvez le spécifier dans votre modèle emr comme suit
Classification: spark-defaults ConfigurationProperties: spark.jars: Your jar location
Je peux fournir manuellement le chemin par défaut par copier-coller, mais je souhaite rester le chemin par défaut cohérent d'AWS.
Le problème ici est que ce n'est pas un
spark.executor.extraClassPath
n'est pas une variable d'environnement, vous ne pourrez donc pas utiliser l'exportation pour ajouter un chemin à l'autre ...Ouais je sais. Peut-être que j'ai besoin de le faire de manière sale ... En ajoutant une étape au bootstrap emr après la présence de spark conf, utilisez
sed
pour grep la ligne et ajouter le chemin ... @ eliasah