我知道当 hive.exec.parallel 在 hive 中设置为 true 即
set hive.exec.parallel=true;
然后查询中的独立任务可以并行运行。
感谢 Qubole:
将此参数设置为 false 有什么好处吗?我将在这里迭代自己:显然,只要有可能,您希望并行运行并获得更多吞吐量。为什么有人将此参数设置为 false - 也有任何缺点吗?
我知道当 hive.exec.parallel 在 hive 中设置为 true 即
set hive.exec.parallel=true;
然后查询中的独立任务可以并行运行。
感谢 Qubole:
将此参数设置为 false 有什么好处吗?我将在这里迭代自己:显然,只要有可能,您希望并行运行并获得更多吞吐量。为什么有人将此参数设置为 false - 也有任何缺点吗?
它只是一个参数,因为当它被引入时,并不清楚它有多稳定,因此您应该能够将其关闭。一旦有足够多的人尝试并发现它稳定,默认切换为 true: https ://issues.apache.org/jira/browse/HIVE-1033
目前没有现实的劣势。
根据我的经验,唯一的缺点是资源使用。如果您的可用资源有限,总体而言,让查询连续运行可能会更好。当查询并行运行时,一个查询可以同时管理多个作业,这可能会导致集群资源匮乏。如果您不需要速度并且有一个工作负载很大的集群,那么让事情串行运行可能会更好。
Mayank, 这个属性也有一些明星条件的好处。我的意思是说 Hive 在该数据库上运行多个查询时具有数据库锁定功能。
例如 -
您有一个在一个数据库上运行多个阶段的复杂查询,其中 Parallel 属性可以提高您的效率,但它也会在 DATABASE 上创建“ LOCK ”,这可能会在它自己执行时停止在同一数据库上运行的其他进程.
我最近遇到了这个问题,并通过将此属性设置为“ FALSE ”来解决。
我希望这个答案可以帮助您了解在什么情况下我们必须使它成为错误。