Spark 学习遇到的一些问题

网友投稿 698 2022-05-29

Spark 学习中遇到的一些问题

SparkSQL 相关

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

原因:

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

解决方法:

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

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

原因:

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

解决方法:

Spark 学习中遇到的一些问题

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

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

原因:

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

解决方法:

解决密码和验证问题

SparkCore 相关

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

原因:

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

解决方法:

1、最好和 Spark 相关的 jar 进行适配。

2、如果不行可以使用参数:spark.driver.userClassPathFirst和spark.executor.userClassPathFirst 设置为true

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

原因:

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

解决方法:

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

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

spark

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:数据传输加
下一篇:《Spark数据分析:基于Python语言 》 —3.1.2 Spark工作节点与执行器
相关文章