通过AWS数据管道运行python脚本

2024-04-28 11:22:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用AWS数据管道运行每夜的SQL查询,这些查询填充汇总统计表。这个用户界面有点古怪,但最终我把它装起来并开始工作了。

现在我想用python脚本做一些类似的事情。我有一个每天早上在笔记本电脑上运行的文件(forecast_rev.py),但这当然意味着我必须每天打开笔记本电脑并启动它。当然,我可以安排一个管道来做同样的事情,这样我就可以去度假而不在乎了。

在我的一生中,我找不到关于这个的教程,AWS文档,或者StackOverflow!我甚至不知道怎么开始。有没有人愿意分享一条简单的管道?


Tags: 文件数据py脚本awssql管道rev
2条回答

我也遇到过类似的情况,我就是这么过来的。
我要描述一下我是如何使用Ec2Resource的。如果您正在EMRCluster中寻找解决方案,请参阅@franklinsijoanswer

步骤
1。将python脚本存储在s3中。
2。创建一个shell脚本(hello.sh)(如下所示)并将其存储到s3
3。创建Ec2Resource节点和ShellCommandActivity节点并提供这些信息。

  • 在“脚本Uri”中提供shell脚本S3 url,并在ShellCommandActivity中将“stage”设置为true。它应该在你的DefaultResource上运行

下面是shell脚本(hello.sh),它从s3下载python程序并在本地存储,安装python和所需的第三方库,最后执行python文件。

你好。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

我在尝试bang line时遇到了困难,所以不要将它们包含在这里。
如果aws cp命令不起作用(awscli更旧),这里有一个快速解决方案

  1. 按照上面的步骤1-3,创建一个s3DataNode
    一、 在S3DataNode的“文件路径”中提供您的python s3 url。
    二。提供数据节点作为ShellCommandActivity
    的“输入” 三、 在ShellCommandActivity的“command”字段中编写以下命令

命令

echo 'Install Python2'
sudo yum -y install python-pip
pip install <dependencies>
python ${INPUT1_STAGING_DIR}/hello_world.py
  1. 您需要将python脚本存储在S3 bucket中
  2. 创建安装python和所有依赖项的Shell脚本,将python脚本从S3复制到本地存储并运行它。Shell script example
  3. 将这个shell脚本存储在S3上
  4. 使用ShellCommandActivity启动shell脚本。

可以使用此模板作为示例: http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-template-redshiftrdsfull.html 它使用存储在s3上的python脚本将MySQL模式转换为RedShift模式。

运行python程序的python shell脚本示例:

#!/bin/bash
curl -O https://s3.amazonaws.com/datapipeline-us-east-1/sample-scripts/mysql_to_redshift.py
python mysql_to_redshift.py

相关问题 更多 >