我正在尝试使用 AWS EMR 对输入文件进行分区。
我使用流式传输步骤从标准输入读取数据。
我想根据 stdin 每一行的特定字段的值将此文件拆分为 2 个文件,并将结果输出存储到 S3 中以备后用。
我找不到任何关于如何使用 python 实现此目的的文档。
你能为我指出正确的方向吗?
我将不胜感激。
谢谢
最佳答案
不确定您遇到了什么麻烦。这是一篇好文章 - 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()
reducer
#!/usr/bin/python
def main():
for line in sys.stdin:
print line
if __name__ == "__main__":
main()
添加此步骤时,您指定输入、输出(某些 s3 存储桶)和这些文件作为映射器和缩减器。
注意,有些配置不设置 reducer,只设置一个 mapper 任务。我把它都包括在上面因为你似乎是一个初学者
关于python - map 减少python boto中的多个输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16304362/