【发布时间】:2023-02-12 15:23:10
【问题描述】:
就像我们如何在 SPARK 中的不同工作节点上分发表数据并确保我们对该数据运行的操作并行运行。 .parallelize() 不应该是 .distribute() 因为它将数据集拆分到 SPARK 集群中的各个工作节点上吗?
查看 SPARK 和 DATABRICKS 文档,我对数据的并行化和分布感到困惑。
【问题讨论】:
标签: pyspark apache-spark-sql databricks
就像我们如何在 SPARK 中的不同工作节点上分发表数据并确保我们对该数据运行的操作并行运行。 .parallelize() 不应该是 .distribute() 因为它将数据集拆分到 SPARK 集群中的各个工作节点上吗?
查看 SPARK 和 DATABRICKS 文档,我对数据的并行化和分布感到困惑。
【问题讨论】:
标签: pyspark apache-spark-sql databricks
在 Apache Spark 中,将数据划分为更小的分区并并行处理每个分区的过程称为并行化。 .parallelize()方法用于将驱动程序中的集合转换为RDD(Resilient Distributed Dataset),可以分布在Spark集群的多个节点上进行并行处理。
另一方面,分发是指将数据分发到 Spark 集群中的多个节点的过程。这是在您对 RDD 执行操作(例如过滤、映射或归约)时由 Spark 自动完成的。 Spark 负责数据的分布,以便每个节点可以并行地在单独的分区上工作。
术语并行化和分布经常互换使用,但它们在 Spark 的上下文中是略有不同的概念。总而言之,并行化是将单个数据集划分为更小的分区以进行并行处理,而分布式是将这些分区分布到集群中的多个节点以进行进一步处理。
有助于说明 Apache Spark 中并行化和分布式之间差异的示例:
假设您有一个大型数据集,您希望使用 Spark 对其进行处理。首先,您将使用 .parallelize() 方法从您的数据集中创建一个 RDD(弹性分布式数据集)。这会将您的数据集划分为更小的分区,每个分区都可以并行处理。这就是并行化。
接下来,Spark 会自动将你的 RDD 的分区分布到 Spark 集群中的多个节点上。每个节点将接收一个或多个分区,并将与其他节点并行处理这些分区中的数据。这就是分布。
换句话说,并行化是将数据分成更小的单元进行处理,而分布是将这些单元分散到多个节点上进行并行处理。这样,Spark 可以比在单个节点上处理数据更快地处理大型数据集。
【讨论】: