问题标签 [spark-ui]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
65 浏览

permissions - 查看通过 Azure ADF 执行的作业的 Spark UI

我无法查看通过 Azure 数据工厂中的笔记本活动执行的数据块作业的 spark-ui。

有谁知道需要添加哪些权限才能启用相同的权限?

在此处输入图像描述

0 投票
1 回答
136 浏览

apache-spark - 单个操作的多个作业(读取、转换、写入)

目前在Databricks 交互式集群上使用 PySpark (使用Databricks-connect提交作业)和Snowflake作为输入/输出数据。

我的 Spark 应用程序应该从 Snowflake 读取数据,应用一些简单的 SQL 转换(主要是F.when.otherwise,窄转换),然后将其加载回 Snowflake。(仅供参考,模式被传递给雪花阅读器和作家)

编辑:在过程结束时,在写作之前还有一个排序转换。

出于测试目的,我将我的工作命名为:(应该命名为 Writer 和 Reader)

我无法理解 Spark UI 向我展示的内容:

在此处输入图像描述

所以,我得到了 3 个工作,所有工作名称都相同(作家)。我可以理解我只有一个 Spark Action,所以假设有一个作业,所以 Spark 确实将作业命名为 sc.setJobDescription 设置的最后一个值(Reader,触发 spark 计算)。

我也标记了我的“ReaderClass”

为什么不显示?

第一个工作是像“从雪花下载数据”,第二个“应用 SQL 转换”,然后是第三个“上传数据到雪花”?

为什么我所有的工作都与同一个 SQL 查询有关?什么是与...零工作相关的查询 0?

SQL 查询

SQL查询物理计划 感谢帮助。

0 投票
0 回答
41 浏览

apache-spark - 缓存表未显示在 Spark UI 的存储选项卡中

我们在我们的项目中使用 Spark SQL 版本 2.4.7 并通过Thrift或有时Spark-Shell从命令行运行 SQL 查询(在 SQL API 中),如下所示:-

节俭(SQL 工作台):

或者

火花壳:

我试图通过首先在内存中估计 Spark SQLcaching的大小,然后检查Storage选项卡Spark UI以获得该表的大致大小估计。

不幸的是,我上面使用的这些方法都没有StorageSpark UI. 我在互联网上进行了很多搜索,但没有找到任何确凿的解决方案。

任何人都可以帮助确定问题并提供解决方案,以便缓存表显示在 UI 中吗?

谢谢。

0 投票
0 回答
17 浏览

apache-spark - 如何在 Spark UI 反向代理中增加 Jetty 的标头缓冲区大小

当我单击独立 Spark UI 中的工作程序链接时,我收到“HTTP ERROR 502 Bad Gateway”。查看主日志,我可以看到相应的消息...

HttpSenderOverHTTP.java:219 生成的 headers (4096 bytes), chunk (-1 bytes), content (0 bytes) - HEADER_OVERFLOW/HttpGenerator@231f022d{s=START}

我的 Spark UI 前面的网络基础设施确实生成了一个大于 4096 字节的标头,Spark 反向代理正试图将其传递给工作 UI。如果我绕过该基础设施,UI 会正常工作。

在深入研究 Spark UI 代码后,我相信Jetty ProxyServlet的requestBufferSize init 参数控制了这一点。

这可以通过(比如说)Java 属性在运行时增加吗?例如,类似...

我已经尝试过上述方法但没有成功——我对 Jetty 或 Servlet 不够熟悉,一般不知道这是否接近有效。显然,我也在研究减小标头大小的方法,但这涉及到我无法控制的系统。

(火花 v3.0.2 / 码头 9.4)

0 投票
1 回答
29 浏览

apache-spark-sql - 在 Spark SQL Query 中计算最优 Shuffle Partitions 并减轻 Skew

我在 EMR(使用 YARN)上使用 Spark SQL v2.4.7。我编写 Spark Sql 查询来执行转换。

估计复杂查询的最佳随机分区数
我正在尝试估计需要设置的最佳随机分区数,以便为具有多个连接的复杂查询获得最佳性能。在网上我发现分区的最佳大小应该在10 MB-的范围内100 MB。现在,既然我知道了这个值,我下一步就是计算查询的数据 shuffle 量(以 MB 为单位),然后除以100得到 shuffle 分区号。但是,对于涉及多个大表连接的复杂查询,估计 shuffle 量变得极其困难。
那么我如何估计shuffle volume的数量,从而得出最佳的大查询所需的随机分区数?目前(经过大量搜索)我正在执行以下步骤 -

注意:这只是实际查询的简化版本。

好的,现在,我正在尝试估计此查询的数据大小,然后我可以将其除以100 MB得到查询的最佳随机分区数。

所以上述查询的大小是34.5 GB当除以100 MB给出~ 350随机分区时。现在设置 config 后SET spark.sql.shuffle.partitions=350,我仍然看到查询很慢。所以我的问题是——

  • 我这样做对吗?否则,请让我知道如何计算复杂查询(涉及多个连接)的随机播放量,并最终能够计算任何给定复杂查询的最佳随机播放分区数。

SKEW
对于上面提到的查询,我看到12作业是在 Spark UI 中触发的。在 UI 中,最后一个作业显示高倾斜,即一个任务是一个长条,而其他同时执行的任务由几个非常小的条表示(我希望我可以提供 UI 屏幕截图)-所以,我的问题(基于上述) 是-

  • 如何确定上述查询的哪一部分,或者具体来说,这个大型复杂查询中的哪个表/列是导致倾斜的主要原因?在一个大查询中有如此多的表和联接,通过一次联接 2 个表并检查 UI 和进度来进行测试变得非常困难和耗时。
    那么有没有什么聪明的方法来找出导致倾斜的实际连接表/列?
  • 此外,在确定导致倾斜的表/列之后,我该如何解决这个问题,以便所有分区都有相同的数据量来处理,从而加快工作速度?
  • 如何将 UI 中的特定作业(触发的火花)与查询的哪个特定部分相关联?

写入输出时倾斜:
最后,我将上述查询的输出写入S3SQL API ( %sql%) 为 -

即使是这样,当我检查 UI 时,我也发现了像上面这样的巨大偏差,一个任务是一个非常长的条,而其他同时执行的任务是非常小的条。如果您仔细观察,您会发现上面显示的最终查询union all与另一个具有硬编码值(即'NA' as state_nm)的查询进行了匹配。现在,由于-ed 表中有周围的100 Million记录,因此该值成为输出中列的主要值,从而产生偏斜,从而使写入非常慢。union'NA'state_nm

所以我的最后一个问题是——

  • 在作为 parquet 文件(使用 sql API)写入磁盘时,如何减轻由输出中的硬编码值引起的这种偏差?请注意,我已尝试在其repartitionPK 列(iddistribute by idcreate table

我的集群配置如下:

对于这篇长篇文章,我感到非常抱歉,但是这些问题困扰了我很长时间。我在互联网上搜索了很多,但找不到任何具体的答案。谁能帮我解决这些问题。任何帮助表示赞赏。

谢谢。

0 投票
0 回答
8 浏览

apache-spark - 为什么火花日志显示火花 Web UI 的错误端口?

我手动启动主节点,日志显示:

22/02/10 23:24:55 INFO Utils:在端口 22/02/10 23:24:55 成功启动服务“MasterUI”
信息 MasterWebUI:将 MasterWebUI 绑定到 127.0.0.1,并在 http://localhost 启动: 8080 22/02/10 23:24:56 INFO 师父:我被选为领导了!新状态:ALIVE

但是, http://localhost:8080 不会去任何地方。

我尝试打开资源监视器并检查是否有端口 8080 开放,偶然发现端口 4040 正在被 java 使用。事实证明,http://localhost:4040 正确连接到 web ui。

有什么办法可以防止这种情况发生吗?