gpt4 book ai didi

apache-spark - Web UI Spark 作业中的 ThreadPoolExecutor 作业是什么?

转载 作者:行者123 更新时间:2023-12-03 14:39:49 25 4
gpt4 key购买 nike

我正在使用 Spark SQL 1.6.1 并且正在执行一些连接。

查看 spark UI,我看到有一些作业描述为“在 ThreadPoolExecutor.java:1142 运行”

Example of some of these jobs

我想知道为什么一些 Spark 工作会得到这样的描述?

最佳答案

经过一番调查,我发现运行在 ThreadPoolExecutor.java:1142 Spark 作业与 join 的查询相关。符合 BroadcastHashJoin 定义的运算符其中一个加入方被广播给执行者以进行加入。

BroadcastHashJoin运算符使用 ThreadPool对于这种异步广播(见 thisthis )。

scala> spark.version
res16: String = 2.1.0-SNAPSHOT

scala> val left = spark.range(1)
left: org.apache.spark.sql.Dataset[Long] = [id: bigint]

scala> val right = spark.range(1)
right: org.apache.spark.sql.Dataset[Long] = [id: bigint]

scala> left.join(right, Seq("id")).show
+---+
| id|
+---+
| 0|
+---+

当您切换到 SQL 选项卡时,您应该会看到 已完成的查询 部分及其 职位 (在右侧)。

SQL tab in web UI with Completed Queries

在我的情况下,运行在“运行在 ThreadPoolExecutor.java:1142”上的 Spark 作业,其中 id 为 12 和 16。

Jobs tab in web UI with "run at ThreadPoolExecutor.java:1142" jobs

它们都对应于 join查询。

如果您想知道“这是有道理的,我的一个联接导致此作业出现,但据我所知,联接是一个随机转换而不是一个 Action ,那么为什么使用 ThreadPoolExecutor 而不是我的 Action 来描述作业(如我的其他工作也是如此)?”,那么我的回答通常是这样的:

Spark SQL 是 Spark 的扩展,具有自己的抽象( Dataset s 只是快速想到的那个),它们有自己的执行运算符。一个“简单”的 SQL 操作可以运行一个或多个 Spark 作业。运行或提交多少 Spark 作业由 Spark SQL 的执行引擎自行决定(但它们确实使用 RDD)——您不必知道如此低级的细节,因为它......嗯...... .too low-level ...假设您使用 Spark SQL 的 SQL 或 Query DSL 的级别如此之高。

关于apache-spark - Web UI Spark 作业中的 ThreadPoolExecutor 作业是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40852622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com