首页 > 解决方案 > 如何让 Dataproc 将 Python-Hive 连接检测为 Yarn Job?

问题描述

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

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

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

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

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

谢谢。

标签: hivehadoop-yarnpyodbcgoogle-cloud-dataprocpyhive

解决方案


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

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

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

推荐阅读