我在Hiveql中运行创建表查询,并在运行时获得以下错误:
状态:失败 超出计数器限制:计数器太多:2001 max = 2000 FAILED:执行错误,从org.apache.hadoop.hive.ql.exec.tez.TezTask返回代码2。超出计数器限制:计数器太多:2001 max = 2000
我试图将计数器设置为更大的数字,即 设置tez.counters.max = 16000;
然而,它仍然会出现同样的错误。
我的查询包含13个左连接但数据集相对较小(1,000行)。当大约有10个连接时,查询确实有效,但由于我添加了其他连接,因此它已经开始失败。
有关如何配置此工作的任何建议将不胜感激!
答案 0 :(得分:0)
您需要从失败的容器中找到真正的初始错误日志。您在此处显示的错误不是初始错误。 2001年容器(包括重启尝试)由于其他一些错误(您确实需要修复)而失败,然后所有作业都被终止,所有其他容器因失败的计数器限制而被杀死。转到Job tracker并找到一些失败的(未杀死的)容器并读取它的日志。真正的问题不在于限制,更改失败的计数器限制将无济于事。
答案 1 :(得分:0)
将查询分为多个步骤,然后运行它。
正如您所说,您的查询可用于10个联接,因此首先创建具有前10个联接的数据的表,然后使用新表,创建具有来自第一个表和其他三个表的数据的另一个表。
我面临在100个表上应用union all语句的相同问题,但是当我一次只运行10个表时,它就起作用了。
希望这会有所帮助!!!!