【发布时间】:2021-07-12 09:32:39
【问题描述】:
我有一个由一个主节点和两个工作节点组成的 spark 集群。
当执行以下代码从数据库中提取数据时,实际执行是由 master 而不是其中一个 worker 执行的。
sparkSession.read
.format("jdbc")
.option("url", jdbcURL)
.option("user", user)
.option("query", query)
.option("driver", driverClass)
.option("fetchsize", fetchsize)
.option("numPartitions", numPartitions)
.option("queryTimeout", queryTimeout)
.options(options)
.load()
这是预期的行为吗?
有什么方法可以禁用这种行为吗?
【问题讨论】:
-
它应该在工作节点上运行,除非在主节点本身上创建了一个执行器。当您运行其他一般火花操作(如 groupBy/count 等)时,会有什么行为?您是否对两者进行了监控和比较?
-
您是如何创建 Spark 会话的(以及它的配置是什么)?您如何检查工作是在主节点还是工作节点上进行?
-
@Sanket9394 什么情况下执行器是在主节点上创建的?
标签: scala apache-spark google-cloud-dataproc