Spark 学习中遇到的一些问题

举报
cloud昵称bbs 发表于 2021/04/06 19:48:24 2021/04/06
【摘要】 Spark 学习中遇到的一些问题 1. SparkSQL 相关 2. SparkCore 相关

Spark 学习中遇到的一些问题

SparkSQL 相关

  1. 在执行 insert 语句时报错,堆栈信息为:FileSystem closed。常常出现在 ThriftServer 里面。

    原因
    由于 hadoop FileSystem.get 获得的 FileSystem 会从缓存加载,如果多线程一个线程 closedFileSystem 会导致该 BUG

    解决方法
    hdfs 存在不从缓存加载的解决方式,在 hdfs-site.xml 配置 fs.hdfs.impl.disable.cache=true 即可

  2. 在执行 Sparksql 操作 orc 类型的表时抛出:java.lang.IndexOutOfBoundsException 或者 java.lang.NullPointerException

    原因
    分区或者表下存在空的orc文件。该 BUG 在 Spark2.3.0之后才修复

    解决方法
    规避解决。修改 ORC 的默认分割策略为:hive.exec.orc.split.strategy=BI 进行解决。Orc 的 split 有3种策略(ETL、BI、HYBIRD),默认是 HYBIRD(混合模式,根据文件大小和文件个数自动选择 ETL 还是 BI 模式),BI 模式是按照文件个数来分 split

  3. ThriftServer 登录异常:javax.security.sasl.AuthenticationException: Error validating LDAP user

    原因
    是由于密码错误或者 LDAP 服务异常

    解决方法
    解决密码和验证问题

SparkCore 相关

  1. jar包版本冲突时:java.lang.ClassNotFoundException: XXX

    原因
    一般可能是用户 jar和 Spark jar 冲突

    解决方法
    1、最好和 Spark 相关的 jar 进行适配。
    2、如果不行可以使用参数:spark.driver.userClassPathFirst和spark.executor.userClassPathFirst 设置为true

  2. 集群节点异常导致 Spark job 失败,如磁盘只读。

    原因
    Spark 是一个高性能、容错的分布式计算框架,一旦它知道某个计算所在的机器出现问题会依据之前生成的 lineage 重新在这台机器上调度这个 Task,如果超过失败次数就会导致 job 失败。

    解决方法
    Spark 有黑名单机制,在超出一定次数的失败后不会往该节点或者 Executor 调度 Task。设置相应 Black 参数:spark.blacklist.enabled=true

  3. on yarn 启动 spark-sql 和 spark-submit 时出现:java.lang.NoClassDefFoundError: com/sun/jersey/api/client/config/ClientConfig

    原因
    和 yarn 相关 Jersey 包冲突

    解决方法
    配置上–conf spark.hadoop.yarn.timeline-service.enabled=false

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。