1

我正在尝试使用 AWS EMR 对输入文件进行分区。我使用流式步骤从标准输入读取。
我想根据每行标准输入的特定字段的值将此文件拆分为 2 个文件,并将结果输出存储到 S3 以供以后使用。我找不到任何关于如何使用 python 实现这一点的文档。你能为我指出正确的方向吗?我将不胜感激。

谢谢

4

1 回答 1

1

不完全确定您遇到了什么麻烦。这是一篇好文章 - http://aws.amazon.com/articles/2294

您的具体问题,您想创建一个映射器,它将您的文件作为输入并将每一行拆分为一个键、值对(键确定它将在哪个输出文件中),而您的减速器只需要输出这些,a无操作。

映射器

#!/usr/bin/python

def main():
    for line in sys.stdin:
        key = get_my_key(line)
        value = line
        print '{}\t{}'.format(key, value)

if __name__ == "__main__":
    main()

减速器

#!/usr/bin/python

def main():
    for line in sys.stdin:
        print line

if __name__ == "__main__":
    main()

添加此步骤时,您将输入、输出(一些 s3 存储桶)和这些文件指定为映射器和缩减器。

注意,有些配置不设置reducer,只是一个mapper任务。我把它都包括在上面了,因为你似乎是一个初学者

于 2013-04-30T16:41:53.520 回答