谁在 Apache Spark 中将分区加载到 RAM 中?

Posted

技术标签:

【中文标题】谁在 Apache Spark 中将分区加载到 RAM 中?【英文标题】:Who loads partitions into RAM in Spache Spark? 【发布时间】:2016-07-20 20:57:11 【问题描述】:

我有这个问题,我无法在任何地方找到答案。

我正在使用以下行在 PySpark 应用程序中加载数据:

loadFile = self.tableName+".csv"
dfInput= self.sqlContext.read.format("com.databricks.spark.csv").option("header", "true").load(loadFile) 

我的集群配置如下:

我正在使用具有 3 个节点的 Spark 集群:1 个节点用于启动主节点,其他 2 个节点各运行 1 个工作节点。 我使用脚本从集群外部的登录节点上提交应用程序。 脚本以集群部署模式提交 Spark 应用程序,我认为,然后在这种情况下,使驱动程序在我正在使用的 3 个节点中的任何一个上运行。 输入的 CSV 文件存储在全局可见的临时文件系统 (Lustre) 中。

在 Apache Spark Standalone 中,将分区加载到 RAM 的过程是怎样的?

    是不是每个执行程序都访问驱动程序的节点 RAM 并从那里将分区加载到自己的 RAM 中? (存储 --> 驱动程序的内存 --> 执行程序的内存) 是否每个执行程序都访问存储并加载到自己的 RAM 中? (存储 --> 执行者的 RAM)

这些都不是,我在这里遗漏了一些东西吗?我如何自己见证这个过程(监控工具、unix 命令、Spark 中的某处)?

任何我可以深入了解的评论或资源都会非常有帮助。提前致谢。

【问题讨论】:

【参考方案1】:

第二种情况是正确的:

每个执行程序都访问存储并加载到自己的 RAM 中? (存储 --> 执行者的 RAM)

【讨论】:

以上是关于谁在 Apache Spark 中将分区加载到 RAM 中?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spark 中将两个 RDD[string] 合并在一起?

Apache Spark 如何将分区 ID 分配给其执行程序

Apache Spark 动态分区 OverWrite 问题

在Apache Spark中使用Bigquery Connector时如何设置分区数?

scala-spark实现重分区和打印各个分区的data

Spark - 使用 foreachpartition 收集分区