谁在 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 问题