【发布时间】:2018-09-30 18:46:03
【问题描述】:
我有一个工作,它包含大约 9 条 sql 语句来从 hive 中提取数据并写回 hive db。它目前正在运行 3 小时,考虑到处理数据的火花能力,这似乎太长了。该应用程序总共启动 11 个阶段。
我使用 Spark UI 做了一些分析,发现以下灰色区域可以改进:
- 作业 5 中的第 8 阶段具有 1.5 TB 的随机输出。
- 作业 4 和作业 5 之间的时间间隔为 20 分钟。我读到了这个时间间隔,发现 spark 执行 IO 超出 spark 作业,这反映了两个作业之间的间隔,可以在驱动程序日志中看到。
我们有一个由 800 个节点组成的集群,每个队列的资源有限,我使用下面的 conf 提交作业:
- --执行人数 200 -- 执行器核心 1 -- 执行器内存 6G -- 部署模式客户端
也附上 UI 的图片。
现在我的问题是:
【问题讨论】:
-
这 9 条单独的 SQL 语句是针对 HDFS 中的同一张表还是 N 表?
-
前两个 SQL 从主表拉数据到一个公用表。查询的其余部分使用公用表根据过滤条件生成输出。
标签: apache-spark pyspark apache-spark-sql