gpt4 book ai didi

apache-spark - 如何以编程方式从提交 ID 或驱动程序 ID 获取应用程序 ID

转载 作者:行者123 更新时间:2023-12-04 08:55:05 25 4
gpt4 key购买 nike

我正在集群部署模式下提交 Spark 作业。我在我的代码中获得了提交 ID。为了使用 Spark rest Api,我们需要 applicationId。那么我们如何以编程方式通过提交 ID 获取应用程序 ID

最佳答案

要回答这个问题,假设已知证书 ID 可以通过以下函数获得:

scala> spark.sparkContext.applicationId

如果你想得到它有点不同。通过其余的 API,可以发送命令。例如,在以下关于 Apache REST API 的有用教程中: http://arturmkrtchyan.com/apache-spark-hidden-rest-api
另一种解决方案是自己编程。您可以使用以下样式发送 Spark 提交:
$SPARK_HOME/bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://my-cluster:7077 \
--deploy-mode cluster \
/path/to/examples.jar 1000

在终端的背景中,您应该看到正在生成的日志文件。在日志文件中有应用程序 ID (App_ID)。 $SPARK_HOME这里是通向spark所在文件夹的环境变量。

例如 python 可以在下面描述的代码中获取 App_ID。首先,我们创建一个列表以使用 Python 发送命令 subprocess。模块。 subprocess 模块可以创建一个 PIPE,您可以从中提取日志信息,而不是使用 Spark 作为其标准选项将其发布到终端。请务必使用 communicate()在 Popen 之后,防止等待操作系统。然后将它分成几行并刮过它以找到 App_ID .该示例可以在下面找到:
submitSparkList=['$SPARK_HOME/bin/spark-submit','--class','org.apache.spark.examples.SparkPi','--master spark://my-cluster:7077','--deploy-mode cluster','/path/to/examples.py','1000']
sparkCommand=subprocess.Popen(submitSparkList,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
stdout, stderr = sparkCommand.communicate()
stderr=stderr.splitlines()
for line in stderr:
if "Connected to Spark cluster" in line: #this is the first line from the rest API that contains the ID. Scrape through the logs to find it.
app_ID_index=line.find('app-')
app_ID=line[app_ID_index:] #this gives the app_ID
print('The app ID is ' + app_ID)

遵循 Python 指南,这包含不使用communicate() 函数时的警告:
https://docs.python.org/2/library/subprocess.html

警告这将在使用 stdout=PIPE 和/或 stderr=PIPE 时发生死锁,并且子进程会向管道生成足够的输出,从而阻塞等待 OS 管道缓冲区接受更多数据。使用communicate() 来避免这种情况。

关于apache-spark - 如何以编程方式从提交 ID 或驱动程序 ID 获取应用程序 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32111460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com