RDD在集群中有20个分区但没有使用工作者

时间:2016-09-20 22:35:01

标签: postgresql jdbc apache-spark pyspark rdd

我有一个来自importing from Postgres via JDBC的20个分区的RDD。我有一个有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显示工作者根本没有被使用,即" 0使用"。即使Memory in use显示0.0 B Used。似乎有些不对劲。你会期望至少有一个工人做某事。我可以做些什么来加速计算并利用核心?

enter image description here

1 个答案:

答案 0 :(得分:0)

我认为Memory per Node: 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()