【发布时间】:2021-06-22 01:36:41
【问题描述】:
我正在对 tpch-dbgen 生成的 CSV 运行一些 sql 查询。 为简单起见,我使用一个线程/任务运行它,并查看时间轴中的间隙,如附图所示。 是磁盘操作吗?这种开销可以以某种方式放松或优化吗? 我如何确定那里到底发生了什么?
【问题讨论】:
我正在对 tpch-dbgen 生成的 CSV 运行一些 sql 查询。 为简单起见,我使用一个线程/任务运行它,并查看时间轴中的间隙,如附图所示。 是磁盘操作吗?这种开销可以以某种方式放松或优化吗? 我如何确定那里到底发生了什么?
【问题讨论】:
这可能是在 GPU 处理之前缓冲来自分布式文件系统的文件输入和 Spark 压缩并将任务输出写入磁盘作为 shuffle 的一部分的组合(尚不清楚此查询是否具有来自显示的配置文件部分的 shuffle) .
RAPIDS Accelerator 和 cudf jar 中都有一些 Java 级别的 NVTX 范围,可以帮助提供更多可见性。添加
--conf spark.executor.extraJavaOptions="-Dai.rapids.cudf.nvtx.enabled=true"
到 Spark 命令行以启用应显示在收集的 GPU 配置文件中的这些 NVTX 范围。
另请参阅https://nvidia.github.io/spark-rapids/docs/tuning-guide.html,了解有关为 Apache Spark 调整 RAPIDS 加速器的提示。
【讨论】: