Apache spark 如何从PySpark上下文提取应用程序ID

Apache spark 如何从PySpark上下文提取应用程序ID,apache-spark,yarn,pyspark,Apache Spark,Yarn,Pyspark,A建议使用sc.applicationId,但它不存在于PySpark中,仅存在于scala中 那么,如何计算我的PySpark进程的应用程序id(用于warn)?您可以通过Py4J RPC网关使用Java SparkContext对象: >>> sc._jsc.sc().applicationId() u'application_1433865536131_34483' 请注意,sc.\u jsc是内部变量,而不是公共API的一部分-因此将来可能会更改它(相当小) 我将提交

A建议使用
sc.applicationId
,但它不存在于
PySpark
中,仅存在于
scala


那么,如何计算我的PySpark进程的应用程序id(用于
warn
)?

您可以通过Py4J RPC网关使用Java SparkContext对象:

>>> sc._jsc.sc().applicationId()
u'application_1433865536131_34483'
请注意,
sc.\u jsc
是内部变量,而不是公共API的一部分-因此将来可能会更改它(相当小)

我将提交pull请求以添加此的公共API调用。

在Spark 1.6中(根据@wladymyrov对另一个答案的评论,可能是1.5)


适用于PySpark 2.0.0+

spark_session = SparkSession \
    .builder \
    .enableHiveSupport() \
    .getOrCreate()

app_id = spark_session._sc.applicationId
看起来至少:

从pyspark.sql导入SparkSession
火花=火花会话\
建筑商先生\
.appName('覆盖默认应用程序名称')\
.getOrCreate()
打印(f'--{spark.sparkContext.applicationId}--')
结果:

--- application_1610550667906_166057 ---

. 查找
id()。经PR认可的Spark团队-so sc.applicationID属性将在Spark 1.5.0版本中可用我确认
sc.applicationID
在Spark 1.5.2中可用。
--- application_1610550667906_166057 ---