Postgresql 群集中有20个分区但没有工作区的RDD
我有一个RDD,它有20个分区。我有一个有5个工人(5个核心)的集群。我只是尝试根据以下公式计算每个分区中的元素数:Postgresql 群集中有20个分区但没有工作区的RDD,postgresql,jdbc,apache-spark,pyspark,rdd,Postgresql,Jdbc,Apache Spark,Pyspark,Rdd,我有一个RDD,它有20个分区。我有一个有5个工人(5个核心)的集群。我只是尝试根据以下公式计算每个分区中的元素数: def count_in_a_partition(idx, iterator): count = 0 for _ in iterator: count += 1 return idx, count rdd.mapPartitionsWithIndex(count_in_a_partition).collect() 上面的代码一直在运行,Web GUI显示工
def count_in_a_partition(idx, iterator):
count = 0
for _ in iterator:
count += 1
return idx, count
rdd.mapPartitionsWithIndex(count_in_a_partition).collect()
上面的代码一直在运行,Web GUI显示工人根本没有被使用,即“0已使用”。即使使用中的内存
也显示0.0b已使用
。好像有什么不对劲。你会期望至少有一个工人在做什么。我能做些什么来加速计算和利用核呢
我认为每个节点的
内存:20.0 GB
大于每个节点2.7 GB
的可用内存是问题所在。降低它有助于:
from pyspark.sql import SparkSession
spark = SparkSession\
.builder\
.appName("jupyter-pyspark")\
.master("spark://spark-master:7077")\
.config("spark.executor.memory", "2g")\
.config("spark.driver.memory", "2g")\
.getOrCreate()
我认为每个节点的
内存:20.0 GB
大于每个节点2.7 GB
中的可用内存是问题所在。降低它有助于:
from pyspark.sql import SparkSession
spark = SparkSession\
.builder\
.appName("jupyter-pyspark")\
.master("spark://spark-master:7077")\
.config("spark.executor.memory", "2g")\
.config("spark.driver.memory", "2g")\
.getOrCreate()
嗨,你应该注意一下你的火花配置。将spark.executor.instances设置为(核心数-1)在大多数情况下都有效。还可以减少执行器使用的内存。我从未见过等待的状态。。。你确定postgre运行良好吗?我认为你减少executor使用的内存是正确的。谢谢你能分享你的spark提交命令吗?嗨,你应该关注一下你的spark配置。将spark.executor.instances设置为(核心数-1)在大多数情况下都有效。还可以减少执行器使用的内存。我从未见过等待的状态。。。你确定postgre运行良好吗?我认为你减少executor使用的内存是正确的。谢谢你能分享你的spark提交命令吗?