我正在尝试使用AWS EMR对输入文件进行分区。 我使用流式传输步骤从标准输入读取 我想根据每行stdin中特定字段的值将此文件拆分为2个文件,并将结果输出存储到S3中以供以后使用。 我找不到任何关于如何使用python实现此目的的文档。 你能为我指出正确的方向吗? 我非常感激。
谢谢
答案 0 :(得分:1)
不确定你遇到了什么麻烦。这是一篇好文章 - http://aws.amazon.com/articles/2294
您的具体问题是,您要创建一个映射器,它将您的文件作为输入并将每行拆分为一个键,值对(键确定它将在哪个输出文件中),并且您的reducer将只需要输出这些,一个无操作。
映射
#!/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任务。我把它全部包括在内,因为你似乎是一个初学者