如何从 PySpark 上下文中提取应用程序 ID
How to extract application ID from the PySpark context
一个previous question推荐sc.applicationId
,但是不出现在PySpark
,只出现在scala
。
那么,如何找出我的 PySpark 进程的应用程序 ID(对于 yarn
)?
您可以通过 Py4J RPC 网关使用 Java SparkContext 对象:
>>> sc._jsc.sc().applicationId()
u'application_1433865536131_34483'
请注意 sc._jsc
是内部变量,而不是 public API 的一部分 - 所以它有可能(相当小)在未来被改变。
我将提交拉取请求以添加 public API 为此调用。
在 Spark 1.6 中(根据@wladymyrov 对其他答案的评论,可能是 1.5)
In [1]: sc.applicationId
Out[1]: u'local-1455827907865'
对于 PySpark 2.0.0+
spark_session = SparkSession \
.builder \
.enableHiveSupport() \
.getOrCreate()
app_id = spark_session._sc.applicationId
看起来至少 available in 3.0.1:
from pyspark.sql import SparkSession
spark = SparkSession \
.builder \
.appName('Overriding defaults app name') \
.getOrCreate()
print(f'--- {spark.sparkContext.applicationId} ---')
结果:
--- application_1610550667906_166057 ---
一个previous question推荐sc.applicationId
,但是不出现在PySpark
,只出现在scala
。
那么,如何找出我的 PySpark 进程的应用程序 ID(对于 yarn
)?
您可以通过 Py4J RPC 网关使用 Java SparkContext 对象:
>>> sc._jsc.sc().applicationId()
u'application_1433865536131_34483'
请注意 sc._jsc
是内部变量,而不是 public API 的一部分 - 所以它有可能(相当小)在未来被改变。
我将提交拉取请求以添加 public API 为此调用。
在 Spark 1.6 中(根据@wladymyrov 对其他答案的评论,可能是 1.5)
In [1]: sc.applicationId
Out[1]: u'local-1455827907865'
对于 PySpark 2.0.0+
spark_session = SparkSession \
.builder \
.enableHiveSupport() \
.getOrCreate()
app_id = spark_session._sc.applicationId
看起来至少 available in 3.0.1:
from pyspark.sql import SparkSession
spark = SparkSession \
.builder \
.appName('Overriding defaults app name') \
.getOrCreate()
print(f'--- {spark.sparkContext.applicationId} ---')
结果:
--- application_1610550667906_166057 ---