我正在尝试使用 AWS EMR 对输入文件进行分区。我使用流式步骤从标准输入读取。
我想根据每行标准输入的特定字段的值将此文件拆分为 2 个文件,并将结果输出存储到 S3 以供以后使用。我找不到任何关于如何使用 python 实现这一点的文档。你能为我指出正确的方向吗?我将不胜感激。
谢谢
不完全确定您遇到了什么麻烦。这是一篇好文章 - 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任务。我把它都包括在上面了,因为你似乎是一个初学者