如何从 Python 流式 MapReduce 作业中省略空的 part-000x 文件

How to omit empty part-000x files from Python streaming MapReduce job

我创建了一个 Python 映射器,我 运行 作为 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" 文件。

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

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

但是LazyOutputFormat在JavaAPI里面,你找Python

对应的API