如何从 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" 文件。
我想省略空输出文件。我怎样才能做到这一点?
要省略空输出文件,请使用 LazyOutputFormat
class。它仅在为特定文件生成至少一条记录时才生成部分文件。
但是LazyOutputFormat
在JavaAPI里面,你找Python
对应的API
我创建了一个 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" 文件。
我想省略空输出文件。我怎样才能做到这一点?
要省略空输出文件,请使用 LazyOutputFormat
class。它仅在为特定文件生成至少一条记录时才生成部分文件。
但是LazyOutputFormat
在JavaAPI里面,你找Python