spark架构完全围绕着执行器和核心的概念。我想看看实际上有多少执行器和核心在集群中运行我的spark应用程序。
我试图在我的应用程序中使用下面的代码片段,但没有成功。
val conf = new SparkConf().setAppName("ExecutorTestJob")
val sc = new SparkContext(conf)
conf.get("spark.executor.instances")
conf.get("spark.executor.cores")
有没有什么方法可以用 SparkContext
对象或 SparkConf
对象等。。
3条答案
按热度按时间omtl5h9j1#
这是一个python示例,用于获取内核数(包括主内核数)
def workername(): import socket return str(socket.gethostname()) anrdd=sc.parallelize(['','']) namesRDD = anrdd.flatMap(lambda e: (1,workername())) namesRDD.count()
cdmah0mi2#
scala(编程方式):
getExecutorStorageStatus
以及getExecutorMemoryStatus
两者都返回包括驱动程序在内的执行者的数量。如下面的示例片段。同样地,获取所有属性并按以下方式打印,您也可以获取核心信息。。
或
大部分
spark.executor.cores
遗嘱执行人spark.driver.cores
驱动程序应具有此值。Python:
pythonapi中的上述方法getexecutorstoragestatus和getexecutormemorystatus没有实现
但是可以使用从sparksession公开的py4j绑定进行访问。
sc._jsc.sc().getExecutorMemoryStatus()
b4lqfgs43#
这是一个老问题,但这是我在spark 2.3.0上解决这个问题的代码: