码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 记一次Spark 提交任务执行缓慢之问题解决了


    任务背景

    5分钟一个批次,实现大小表的join,单批次大表数据量3GB,小表数据量5MB。

    提交任务参数

    1. /usr/bin/spark-submit \
    2. --master yarn \
    3. --deploy-mode client \
    4. --queue root.xxx \
    5. --executor-memory 8g \
    6. --num-executors 20 \
    7. --executor-cores 4 \
    8. --driver-memory 10G \
    9. --conf spark.sql.shuffle.partitions=10 \
    10. --class com.xxx.Xxx \
    11. hdfs://xxx/xxx.jar 202208170015

    现象

    Spark History 页面

     Yarn 页面

    思路步骤

    • 通过client 模式提交任务,打印执行日志到客户端

    --deploy-mode client

    • 通过执行日志分析任务执行阶段的耗时情况,通过下图可以发现,在注册块管理器和之间有1分26秒的时间(11分47秒到13分13秒)是没有日志打印的,占整个任务时长的34%

    • 执行job之前,注册 Executor之后,有1分26秒的耗时,没有详细的日志,修改spark client log4j的日志等级为DEBUG

    vim $SPARK_HOME/conf/log4j.properties

    1. # Set everything to be logged to the console
    2. # log4j.rootCategory=INFO, console # 默认是INFO
    3. log4j.rootCategory=DEBUG, console
    4. log4j.appender.console=org.apache.log4j.ConsoleAppender
    5. log4j.appender.console.target=System.err
    6. log4j.appender.console.layout=org.apache.log4j.PatternLayout
    7. log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n
    8. # Settings to quiet third party logs that are too verbose
    9. log4j.logger.org.eclipse.jetty=WARN
    10. log4j.logger.org.eclipse.jetty.util.component.AbstractLifeCycle=ERROR
    11. log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=INFO
    12. log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=INFO

    • 重新执行任务,查看在注册和执行job之间,一直在跟resourcemanager通信,来获取 application 报告信息

    问题产生原因

    spark sql where 条件当中,分区字段的值没有用引号括起来,导致谓词没有成功下推,通过查看执行计划,现象如下:

     

    解决办法

    分区字段的值加上''就好了,通过查看执行计划,现象如下:

    InMemroyFileIndex数组中包含要计算的hive分区对应的hdfs路径,避免了全hdfs目录扫描的过程,很大程度降低了任务耗时。

  • 相关阅读:
    redis三种集群方式
    基于PHP+Amaze+JQuery的学习论坛的设计与实现1.99
    【LeetCode每日一题】——面试题10.11.峰与谷
    基于秃鹰优化的BP神经网络(分类应用) - 附代码
    “花式提涨薪,结果被套路”,不懂怎么跟老板提加薪?这个方法真的很好用
    Go 学习笔记(87) — 函数式选项,初始化结构体对象可变参数
    企业微信怎么统计客户数量
    ASIFT算法过程实现 --- 配置避坑指南
    Xubuntu16.04系统中解决无法识别exFAT格式的U盘
    Python------学生管理(文件txt处理)
  • 原文地址:https://blog.csdn.net/zpf_940810653842/article/details/126400420
  • 最新文章
  • C# 内存安全性的重大演进:重新定义 unsafe 关键字
    三、Linux 文件管理+用户管理
    XGBoost + SHAP 一键生成 10 张出版级模型解释图
    【Azure App Service】应用服务(Web App)里的 SNAT 端口 vs 出站连接数:到底是谁限制了谁?
    WEB-2026DASCTF夏季赛-CorpGate
    为什么你用光模块测试FPGA IBERT不通
    面试官:Workflow 和 Agent 有什么区别?如何选型?
    从失忆到记住一切:Spring AI AutoMemoryTools 与 Session API 实战
    2026 年 5 个最佳 Agent Skills 平台推荐
    15天学会AI应用开发(三)把历史对话作为提示词会怎样
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号