在 HIVE 中运行查询时如何更改 Tez 作业名称

Posted

技术标签:

【中文标题】在 HIVE 中运行查询时如何更改 Tez 作业名称【英文标题】:How to change Tez job name when running query in HIVE 【发布时间】:2015-10-29 19:14:26 【问题描述】:

当我使用 Tez 提交 Hive SQL 时,如下所示:

hive (default)> select count(*) from simple_data;

在资源管理器 UI 中,作业名称显示为 HIVE-9d1906a2-25dd-4a7c-9ea3-bf651036c7eb 之类的内容有没有办法将作业名称更改为my_job_nam

如果我不使用 Tez 并在 MR 中运行作业,我可以使用 set mapred.job.name 设置作业名称。

我需要设置任何 Tez 参数来更改作业名称吗?

感谢任何输入。

【问题讨论】:

MR 将为每个查询运行一个新作业;但 TEZ 将尝试保持其“会话”打开,以避免一直取消分配和重新分配 YARN 容器。所以您的问题是如何设置当前(或未来)TEZ 会话名称。请参阅fr.hortonworks.com/blog/introducing-tez-sessions >> 不幸的是,HIVE 不知道 TEZ 的工作原理,也没有具体的参数... 顺便说一句:在 YARN 和 TEZ 作业(尤其是 OOZIE 作业管理)中支持 自定义标签 的请求由来已久,但这些 JIRA 显示不多进度,见issues.apache.org/jira/browse/TEZ-909 非常感谢 Samson 提供的信息。 【参考方案1】:

您可以使用“set hiveconf hive.query.name=myjobname”但您只能在 TEZ 视图中看到名称。不在纱线中。 请参阅以下链接:https://community.hortonworks.com/questions/5309/how-to-set-tez-job-name.html我也在调查这个问题。如果我找到解决方案,我会更新问题。

【讨论】:

【参考方案2】:

想通了。使用属性hive.session.id 可以更改名称。下面是一个例子。

hive --hiveconf hive.session.id=test_$(date '+%Y%m%d_%H%M%S') \
      -e "select month, max(sale) from simple_data group by month;"

【讨论】:

【参考方案3】:

好问题。在 Spark 上有一个用于 Hive 的 JIRA 用于您要问的非常相似的事情:HIVE-12811 - 您可以在那里使用 spark.app.name;登陆 Hive 2.1。

在 Tez 上找不到任何特定于 Hive 的内容。也许有人需要提交类似于 Hive-12811 的 Hive jira/补丁,但针对 Tez。

【讨论】:

【参考方案4】:

设置 hive.query.name="test_query";

将与 TEZ 一起在 hive 中工作

【讨论】:

【参考方案5】:

设置 mapred.job.name = 更有用的名称

【讨论】:

原始问题已经指出,如果不使用 Tez,但希望使用 Tez 的解决方案是一种可能性。

以上是关于在 HIVE 中运行查询时如何更改 Tez 作业名称的主要内容,如果未能解决你的问题,请参考以下文章

何时使用 Hive 引擎 MR,何时使用 TEZ?

从 Beeline 连接时,Hive 查询在 Tez 上失败,但在 Map-Reduce 上成功

如何使 Hive 查询利用存储在 Metastore 中的统计信息

Hive tez 执行错误

无法创建 InputInitializerManager 错误 - HIVE 上的 TEZ

hive on tez配置