apachespark-如何从PySpark上下文中提取应用程序ID



前面的问题推荐sc.applicationId,但它在PySpark中不存在,仅在scala中存在。

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

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

>>> sc._jsc.sc().applicationId()
u'application_1433865536131_34483'

请注意,sc._jsc是内部变量,而不是公共API的一部分,因此它在未来可能会更改的可能性(相当小)。

我将提交pull请求,为其添加公共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

看起来它至少在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 ---

相关内容

  • 没有找到相关文章

最新更新