如何让 Dataproc 将 Python-Hive 连接检测为 Yarn 作业?

问题描述

我启动了一个 Dataproc 集群并在其上提供 Hive。从我使用 Pyhive 或 PyODBC 的任何机器远程连接到 Hive 并执行操作。这不仅仅是一个查询。它可能是一个带有间歇性查询的长时间会话。 (查询本身有问题;将单独询问。)

即使在单个活动查询期间,该操作也不会在仪表板上显示为“作业”(我猜是 Yarn)。相比之下,当我通过 Pyspark“提交”任务时,它们显示为“作业”。

除了缺乏任务可见性之外,我还怀疑,如果没有 Job,集群可能无法可靠地检测到 Python 客户端“连接”到它,因此集群的自动删除可能会过早启动。

有没有办法“注册一个作业来伴随我的 Python 会话,并在我选择的时间取消/删除该作业?就我而言,这是一个“虚拟”、“名义”的工作,什么也不做。

或者也许有更合适的方法让 Yarn 检测我的 Python 客户端的连接并为其创建作业?

谢谢。

解决方法

目前不支持此功能,您需要通过 Dataproc Jobs API 提交作业以使其在作业 UI 页面上可见并被集群 TTL 功能考虑在内。

如果您无法使用 Dataproc Jobs API 来执行您的实际作业,那么您可以提交一个休眠所需时间(在下面的示例中为 5 小时)的虚拟 Pig 作业,以防止通过最大空闲时间功能删除集群:>

gcloud dataproc jobs submit pig --cluster="${CLUSTER_NAME}" \
    --execute="sh sleep $((5 * 60 * 60))"