使用python脚本的AWS ETL

问题描述:

我正在尝试在使用python的AWS平台上创建基本ETL。 在S3存储桶中(让我们称之为“A”),我有很多原始日志文件,gzip。 我想要做的是定期(=数据管道)解压缩,由python脚本处理,它将重新格式化每一行的结构,并将其输出到另一个S3存储桶(“B”),最好是gzip来自A中相同gzip的相同日志文件,但这不是强制性的。使用python脚本的AWS ETL

我写了python脚本,它需要做(从stdin接收每一行)并输出到stdout(或stderr,如果一行无效。在这种情况下,我希望它是写入另一个桶,“C”)。

我正在摆弄数据管道,试图运行一个shell命令作业和一个用python脚本排序的配置单元。 EMR集群创建,运行,完成,没有失败或错误,但也没有创建日志,我不明白什么是错的。 另外,我想在处理并写入目标或错误的日志桶后删除原始日志。

有没有人有这种配置的经验?和劝告的话?

您想要做的第一件事就是在EMR集群上设置“终止保护” - 一旦数据管道启动它就会立即执行。 (这也可以编写脚本)。

然后您可以登录到'主实例'。这在EMR集群详细信息下的“硬件”窗格下。 (您也可以通过群集ID在EC2控制台中搜索)。

您还必须定义一个'密钥',以便您可以通过SSH连接到主服务器。

登录到主服务器后,您可以查看/ mnt/var/log/hadoop/steps/for logs - 或/ mnt/var/lib/hadoop/..查看实际工件。您可以使用HDFS utils浏览hdfs。

日志(如果它们被写入标准输出或标准错误)已被移至S3。如果你想移动额外的文件,你必须编写一个脚本并使用'script-runner'来运行它。您可以使用's3distcp'复制大量文件。