没有工作节点 运行 作业的 PySpark shell 怎么办?
How can a PySpark shell with no worker nodes run jobs?
我在 pypsark shell(mac,8 核)中有 运行 以下几行。
import pandas as pd
df = spark.createDataFrame(pd.DataFrame(dict(a = list(range(1000)))
df.show()
我想计算我的工作节点(并查看每个节点的核心数),所以我 运行 :
中的 python 命令
sc.getExecutorMemoryStatus().keys()
# JavaObject id=o151
len([executor.host() for executor in sc.statusTracker().getExecutorInfos() ]) -1
# 0
以上代码表示我有1个工人。所以,我检查了 spark UI 我只有 8 核的驱动程序:
驱动中的内核可以完成工作吗?如果是这样,是否有 7 个内核在工作,1 个保留用于“驱动程序”功能?为什么不自动创建工作节点?
Spark 不能为您提供的硬件找出完美的集群(尽管它非常task-specific什么是 完美 基础设施)
实际上,如果您在 YARN master 上 运行(参见 docs 中的 spark.executor.cores 选项),您描述的行为是 Spark 默认设置这样的基础设施的行为。
要修改它,您必须在 运行ning pyspark-shell
时添加一些选项,或者在您的代码中执行,例如:
conf = spark.sparkContext._conf.setAll([('spark.executor.memory', '4g'), ('spark.executor.cores', '4'), ('spark.cores.max', '4'), ('spark.driver.memory','4g')])
spark.sparkContext.stop()
spark = SparkSession.builder.config(conf=conf).getOrCreate()
可以找到更多相关信息 and 。
我在 pypsark shell(mac,8 核)中有 运行 以下几行。
import pandas as pd
df = spark.createDataFrame(pd.DataFrame(dict(a = list(range(1000)))
df.show()
我想计算我的工作节点(并查看每个节点的核心数),所以我 运行
sc.getExecutorMemoryStatus().keys()
# JavaObject id=o151
len([executor.host() for executor in sc.statusTracker().getExecutorInfos() ]) -1
# 0
以上代码表示我有1个工人。所以,我检查了 spark UI 我只有 8 核的驱动程序:
驱动中的内核可以完成工作吗?如果是这样,是否有 7 个内核在工作,1 个保留用于“驱动程序”功能?为什么不自动创建工作节点?
Spark 不能为您提供的硬件找出完美的集群(尽管它非常task-specific什么是 完美 基础设施)
实际上,如果您在 YARN master 上 运行(参见 docs 中的 spark.executor.cores 选项),您描述的行为是 Spark 默认设置这样的基础设施的行为。
要修改它,您必须在 运行ning pyspark-shell
时添加一些选项,或者在您的代码中执行,例如:
conf = spark.sparkContext._conf.setAll([('spark.executor.memory', '4g'), ('spark.executor.cores', '4'), ('spark.cores.max', '4'), ('spark.driver.memory','4g')])
spark.sparkContext.stop()
spark = SparkSession.builder.config(conf=conf).getOrCreate()
可以找到更多相关信息