【发布时间】:2017-01-29 00:12:10
【问题描述】:
我有一个来自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 Used”。甚至Memory in use 也显示0.0 B Used。好像有什么不对。您会期望至少有一名工人正在做某事。我可以做些什么来加快计算速度并利用内核?
【问题讨论】:
-
您好,您应该关注一下您的 spark 配置。大多数情况下,将 spark.executor.instances 设置为 (number of cores - 1) 都有效。您还可以减少执行程序使用的内存。我从来没有见过等待状态......你确定postgre运行良好吗?
-
我认为减少执行程序使用的内存是正确的。谢谢!
-
你能分享你的 spark-submit 命令吗?
标签: postgresql jdbc apache-spark pyspark rdd