我不明白为什么我的数据框只在一个节点上。 我有一个由 14 台机器组成的集群,在一个 spark 独立集群上有 4 个物理 CPU。
我通过笔记本连接并创建我的 spark 上下文:
我希望有 8 个分区的并行性,但是当我创建一个数据帧时,我只得到一个分区:
我错过了什么?
感谢 user8371915 的 anser,我重新分区了我的数据框(我正在读取一个压缩文件 (.csv.gz),所以我理解可拆分的。
但是当我对其进行“计数”时,我认为它仅在一个执行者上执行: 此处即在执行程序 n°1 上,即使文件大 700 Mb,并且位于 HDFS 上的 6 个 block 上。 据我了解,微积分应该超过 10 个核心,超过 5 个节点......但是一切都只在一个节点上计算:-(
请您参考如下方法:
有两种可能:
- 文件大小小于
spark.sql.files.maxPartitionBytes. - 文件使用 gzip 等不可分割的格式进行压缩。
在第一种情况下你可以考虑调整参数,但如果你使用默认值,它已经很小了。
在第二种情况下,最好在加载到 Spark 之前解压缩文件。如果你不能这样做,加载后重新分区,但它会很慢。
