在Hue源代码中的HiveServerClient中获取当前编辑器ID(doc ID)的方法

时间:2018-06-20 07:48:07

标签: hue tez

当多个色相页面同时运行tez应用程序时,有时会将同一会话应用于两个不同的任务,这将导致它们接收到KILL信号,而另一个则抱怨当前的应用程序主控正在已使用并重试。我查看了HiveServerClient._get_tez_session的代码,我认为问题出在检索busy_sessions的方式上,这不是线程安全的。因此,有可能在几乎同时提交两个查询时将它们分配给同一会话。

我想知道有什么方法可以从HiveServerClient._get_tez_session方法中获取当前的编辑器ID(doc_id),所以现在我可以做些黑客工作以寻求一种快速解决方案。谢谢。

1 个答案:

答案 0 :(得分:0)

您可以通过禁用Tez会话模式来解决此问题

set tez.am.mode.session=false;
  

会话模式在保留执行资源和   通常用于具有多个DAG的交互式应用程序   由同一用户快速连续提交。长期运行   应用程序,一次性执行,批处理作业等非会话模式是   推荐的。如果启用了会话模式,则容器重用为   推荐。

也尝试禁用容器重用:

set tez.am.container.reuse.enabled=false;

查看所有Tez配置设置here

也请阅读this有关Tez会话命名的主题。 我自己没有进行测试,也许您可​​以使用hive.session.id属性来获取/设置会话ID。