代码之家  ›  专栏  ›  技术社区  ›  AngiSen

本机文件系统上的火花行为

  •  0
  • AngiSen  · 技术社区  · 6 年前

    我们正在试验在我们的项目中运行spark,而不需要Hadoop,也不需要像HDF这样的分布式存储。spark安装在具有10个内核和16GB RAM的单个节点上,该节点不属于任何集群。假设Spark驱动程序获取2个核心,其余核心在执行时由执行器(每个执行器2个)消耗。

    如果我们将存储在本地磁盘spark中的一个大的csv文件(大小为1GB)作为RDD进行处理,并将其重新分区到4个不同的分区,执行器会并行处理每个分区吗? 如果我们不将RDD重新分区到4个不同分区,执行器会怎么做? 如果不使用HDF,我们是否会失去分布式计算和并行性的能力?

    1 回复  |  直到 6 年前
        1
  •  1
  •   HarryClifton    6 年前

    Spark将分区的最大大小限制为2g,因此您应该能够以最小的分区和更快的处理时间处理整个数据。您可以将spark.executor.cores设置为8,以便利用所有资源。

    理想情况下,您应该根据数据的大小设置分区的数量,最好将分区的数量设置为多个核心/执行器。

    要回答您的问题,在您的情况下,将分区数设置为4可能会导致每个分区被发送到一个执行器。所以是的,每个分区将被并行处理。

    如果您不重新分区,那么spark将根据数据为您进行分区,并在执行器之间分配负载。

    没有Hadoop,Spark工作得很好。您可能会看到性能下降,因为您的文件在本地文件系统上,而不是在HDFS上,但是对于大小为1GB的文件来说,这实际上并不重要。