我正在尝试使用 rest api 通过 livy 提交 spark 作业。但是,如果我多次运行相同的脚本,它会运行具有不同作业 ID 的作业的多个实例。我正在寻找一种方法来在开始新的工作之前杀死以相同名称运行的火花/纱线工作。Livy 文档说(https://github.com/cloudera/livy#batch)删除批处理作业,但 livy 会话不返回应用程序名称,只返回应用程序 ID。
还有另一种方法吗?
我正在尝试使用 rest api 通过 livy 提交 spark 作业。但是,如果我多次运行相同的脚本,它会运行具有不同作业 ID 的作业的多个实例。我正在寻找一种方法来在开始新的工作之前杀死以相同名称运行的火花/纱线工作。Livy 文档说(https://github.com/cloudera/livy#batch)删除批处理作业,但 livy 会话不返回应用程序名称,只返回应用程序 ID。
还有另一种方法吗?
您可以使用 LivyClient API 通过 Livy Server 提交 Spark 作业。LivyClient API 有一个 stop 方法,可以用来终止作业。
LivyClient.close(true);
对于 Livy 0.7.0 版,以下工作。
您要停止的会话 ID 是1
:
import requests
headers = {'Content-Type': 'application/json'}
session_url = 'http://your-livy-server-ip:8998/sessions/1'
requests.delete(session_url, headers=headers)
curl -X DELETE http://your-livy-server-ip:8998/sessions/1
见https://livy.incubator.apache.org/docs/latest/rest-api.html
在 Livy 服务器停止时处于活动状态的会话可能需要手动终止。使用集群管理器中的工具来实现这一点(例如,yarn 命令行工具)。
运行以下命令以查找通过 Livy 启动的交互式作业的应用程序 ID。
纱线应用程序列表
运行以下命令来终止这些作业。
纱线应用程序–kill“应用程序ID”
参考:“<a href="https://docs.microsoft.com/en-us/azure/hdinsight/hdinsight-apache-spark-known-issues#livy-leaks-interactive-session" rel="nofollow noreferrer" >https://docs.microsoft.com/en-us/azure/hdinsight/hdinsight-apache-spark-known-issues#livy-leaks-interactive-session”。