2017-04-17 1 views
1

J'utilise AWS Data Pipelines pour exécuter des requêtes SQL nocturnes qui remplissent les tables pour les statistiques récapitulatives. L'interface utilisateur est un peu géniale, mais finalement je l'ai eu et travailler.Exécution d'un script Python via AWS Data Pipelines

Maintenant, j'aimerais faire quelque chose de similaire avec un script python. J'ai un fichier que je cours tous les matins sur mon ordinateur portable (forecast_rev.py) mais bien sûr cela signifie que I doit allumer mon ordinateur portable et le coup d'envoi tous les jours. Assurément, je peux programmer un Pipeline pour faire la même chose, et ainsi partir en vacances sans m'en soucier.

Pour la vie de moi, je ne peux pas trouver un tutoriel, AWS doc, ou StackOverflow à ce sujet! Je ne suis même pas sûr de savoir comment commencer. Quelqu'un a-t-il un pipeline simple sur lequel il serait prêt à partager ses étapes?

+1

Utilisez [ShellCommandActivity] (http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp- object-shellcommandactivity.html) – franklinsijo

Répondre

0
  1. Vous devez stocker votre script python sur seau S3
  2. Créer Shell script qui installe python et toutes vos dépendances, des copies de votre script python de S3 pour le stockage local et l'exécute. Shell script example.
  3. Stockez ce script shell sur S3
  4. Utilisez ShellCommandActivity pour lancer votre script shell.

Vous pouvez utiliser ce modèle comme un exemple: http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-template-redshiftrdsfull.html Il utilise le script python stocké sur s3 pour convertir schéma MySQL au schéma de RedShift.

+0

Un exemple de script shell fourni est manquant. Veuillez l'incorporer dans la réponse – user3041539

0

J'ai fait face à une situation similaire, voici comment je l'ai survenue.
Je vais décrire comment je l'ai fait avec Ec2Resource. Si vous cherchez une solution dans EMRCluster, référez-vous à @franklinsijo answer.

étapes
. Stockez votre script python dans s3.
. créez un script shell (hello.sh) (ci-dessous) et stockez-le dans s3
. Créez un nœud Ec2Resource et un nœud ShellCommandActivity et fournissez ces informations.

  • url Fournir script shell S3 dans "Script Uri" et mis en "scène" à true dans ShellCommandActivity. Et il devrait fonctionne sur votre DefaultResource

Voici le script shell (hello.sh) qui télécharger votre programme python s3 et stocke localement, installez python et bibliothèque 3ème partie requise et enfin exécuter votre fichier python .

hello.sh

echo 'Download python file to local temp' 
aws s3 cp s3://path/to/python_file/hello_world.py /tmp/hello.py 
# Install python(on CentOs) 
sudo yum -y install python-pip 
pip install <dependencies> 
python /tmp/hello.py 

J'ai eu du mal en essayant avec bang line alors ne les pas inclus ici.
si la commande aws cp ne fonctionne pas (awscli est plus ancienne), voici une solution rapide pour ce cas.

  1. Suivre l'étape 1-3 ci-dessus, ainsi que de créer un s3DataNode.
    I. fournissez votre URL python s3 dans "File Path" de S3DataNode.
    II. fournir DataNode comme "entrée" à ShellCommandActivity
    III. écrire commande suivante dans "commande" champ de ShellCommandActivity

Commande

echo 'Install Python2' 
sudo yum -y install python-pip 
pip install <dependencies> 
python ${INPUT1_STAGING_DIR}/hello_world.py 
+0

ERREUR: Veuillez définir: 'commande' Ou: 'scriptUri' sur le composant: 'ShellCommandActivityObj' – ScottieB

+0

Veuillez 'Fournir le script shell S3 url dans" Script Uri "'. Veuillez fournir les détails écrits après l'étape 3. –

+0

@ScottieB Avez-vous résolu votre problème? –