Skip to main content
 首页 » 编程设计

python之Spark Dataframe 未分发

2024年09月07日38birdshome

我不明白为什么我的数据框只在一个节点上。 我有一个由 14 台机器组成的集群,在一个 spark 独立集群上有 4 个物理 CPU。

我通过笔记本连接并创建我的 spark 上下文:

我希望有 8 个分区的并行性,但是当我创建一个数据帧时,我只得到一个分区:

我错过了什么?

感谢 user8371915 的 anser,我重新分区了我的数据框(我正在读取一个压缩文件 (.csv.gz),所以我理解可拆分的。

但是当我对其进行“计数”时,我认为它仅在一个执行者上执行: 此处即在执行程序 n°1 上,即使文件大 700 Mb,并且位于 HDFS 上的 6 个 block 上。 据我了解,微积分应该超过 10 个核心,超过 5 个节点......但是一切都只在一个节点上计算:-(

请您参考如下方法:

有两种可能:

在第一种情况下你可以考虑调整参数,但如果你使用默认值,它已经很小了。

在第二种情况下,最好在加载到 Spark 之前解压缩文件。如果你不能这样做,加载后重新分区,但它会很慢。