2

我一直在从事一个包含 hive 查询的项目。

INSERT INTO OVERWRITE .... TRANSFORM (....) USING 'python script.py' FROM .... LEFT OUTER JOIN 。. . 左外连接。. . 左外连接

一开始一切正常,直到我们加载了大量的虚拟数据。我们只是在某些字段上写入相同的记录,但有细微的变化。之后我们再次运行它,我们得到一个 Broken pipe 错误,没有太多信息。没有关于错误的日志,只有 IOException: Broken pipe 错误。. . .

为了简化脚本并隔离错误,我们将脚本修改为

for line in sys.stdin.readlines():
    print line

以避免该级别的任何错误。我们仍然有同样的错误。

4

2 回答 2

1

这个问题似乎可以通过在不同查询中拆分如此多的连接并使用中间表来解决。然后,您只需添加一个带有最后一个连接的最终查询,该连接总结了所有先前的结果。据我了解,这意味着脚本级别没有错误,但配置单元处理的数据太多

于 2012-12-06T05:53:12.640 回答
0

另一种解决方法是删除转换并生成一个新查询,将数据插入另一个表中,只是运行转换。我不是 100% 确定为什么,脚本是正确的。我认为问题可能是由于连接太多而流式传输的数据量非常大。

于 2012-12-07T21:58:26.820 回答