如何从Python流MapReduce作业

时间:2015-05-04 12:07:26

标签: python hadoop mapreduce hadoop-streaming

我创建了一个Python mapper,我将其作为Hadoop流式MapReduce作业运行。它验证输入并在输入无效时将消息写入输出。

...
# input from STDIN
for line in sys.stdin:
    indata = json.loads(line)
    try:
        jsonschema.validate(indata,schema)
    except jsonschema.ValidationError, error:
        # validation against schema failed
        print error.message
    except:
        # other exceptions
        raise

我的问题:映射器按预期为无效输入写入消息,但它也会创建空的" part-0000x"有效输入的文件。

我想省略空输出文件。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

要省略空输出文件,请使用LazyOutputFormat类。只有在为特定文件生成至少一条记录时,它才会生成部分文件。

LazyOutputFormat在Java API中,您可以找到相应的Python API