exécution du script pyspark sur EMR
Je suis actuellement automatiser mon Apache Spark Pyspark scripts en utilisant des groupes de EC2s à l'aide des Étincelles préconfiguré ./ec2 répertoire. Pour l'automatisation et les besoins de l'horaire, je voudrais utiliser Boto DME module pour envoyer des scripts pour le cluster.
J'ai été capable de lancer et installer Étincelle sur un cluster de Dme. Je suis aussi capable de lancer un script sur les EMR à l'aide de mon local machine est la version de pyspark, et réglage maître comme tel:
$: MASTER=spark://<insert EMR master node of cluster here> ./bin/pyspark <myscriptname.py>
Cependant, cela m'oblige à exécuter ce script en local, et donc je ne suis pas en mesure de tirer pleinement parti de Boto capacité de 1) démarrer le cluster 2) ajouter le script étapes et 3) arrêter le cluster. J'ai trouvé des exemples d'utilisation de script-runner.sh et dme "étape" des commandes pour spark-shell (scala), mais je suppose que il y a un moyen plus facile de le faire avec le module Python (pyspark). Merci beaucoup à l'avance!
source d'informationauteur Matt
Vous devez vous connecter pour publier un commentaire.
Ici est un excellent exemple de la manière dont elle doit être configuré. Accédez à "Un exemple" pour le code Python.
Cependant, afin de rendre les choses de travail dans les emr-4.7.2, quelques modifications ont dû être apportées, voici donc une AWS commande CLI qui a fonctionné pour moi:
Et ici est un contenu de
pythonjob.py
fichier:Il lit le
data.csv
fichier à partir de S3, divise chaque ligne, convertit la première valeur à la chaîne et un deuxième pour le float, les groupes en première valeur et la somme des valeurs dans la deuxième colonne, et écrit le résultat dans S3.Quelques commentaires:
spark.yarn.submit.waitAppCompletion=true
doncque je puisse suivre l'exécution du travail dans la console.
sys.argv[1]
etsys.argv[2]
respectivement) sont passés au script dans le cadre de l'emploi sumbission (Args
section dansadd-steps
de commande).s3a://
URI au lieu des3n://
ets3://
pour Hadoop de 2,7+ lors de la configuration de votre travail.Cela peut être utile si elle n'utilise pas de boto.
Utiliser aws cli pour créer le cluster et ajouter des étapes(étincelle d'emploi).
1)Créer le cluster:
2) ajouter une étape(étincelle). Notez que votre script python doit être stocké dans le nœud maître(dans ce cas, il est dans /home/hadoop/spark ).
vous pouvez également combiner deux étapes en une, et la création d'un cluster/exécuter le travail et de mettre fin au cluster.
Quelques remarques: 1)j'ai essayé plusieurs façons de lire le script à partir de S3 mais pas de Chance 🙁
j'ai donc fini par copier en utilisant soit boto ou aws de la cli pour le nœud. 2) depuis que j'ai été le tester que sur un nœud de dme à la déployer mode à l'étape de la part du client, pour le client, vous devez changer l'état de cluster.
vous avez besoin de changer le déployer en mode cluster (au lieu de client) à l'accès du script à partir de S3.