打赏

[python] MR输出单条信息不全的问题-python输出缓冲

问题

在写MR代码输出query对应embedding向量时,出现了每个part中最后一个query对应的embedding维度输出不全的问题,但是part中其他embedding维度都是全的,在本地测试也没有问题。

原因分析

以上说明预测embedding的代码本身是没有问题的,MR框架本身也没有问题。

问题原因在于,用户进程和MR框架通过管道连接,如果用户进程没有吐完数据就退出,那么会最后产出的数据不全。

为什么用户进行没有吐完数据呢?

这是python2 print标准输出时,会先输出到stdout的缓冲中,等缓冲满了再一次性输出,如果没有满可能就不会输出。

所以以上提到的最后一个embedding维度不全的问题,可能是缓冲未满未输出造成的。

解决方法

python -u 可以使得python2.7stdout不经过缓冲直接输出

 

posted @ 2020-09-17 08:09  listenviolet  阅读(175)  评论(0编辑  收藏  举报