You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spark读取HBase报SparkSQLPushDownFilter类未找到异常求助

问题根因

报错ClassNotFoundException: org.apache.hadoop.hbase.spark.SparkSQLPushDownFilter的核心原因是YARN集群的Executor运行时无法加载到hbase-spark-1.0.0.jar包内的对应类,常见诱因如下:

  • 提交时用相对路径指定--jars ./hbase-spark-1.0.0.jar,仅Driver节点能读取到本地路径下的jar,Executor节点本地无该jar,无法加载对应类
  • 代码中重复调用spark.sparkContext.addJar和--jars参数,可能导致类加载冲突
  • 若打包时配置了依赖排除规则,可能误将hbase-spark相关类排除在业务jar外
  • 集群HBase服务端版本和你依赖的2.1.0不一致,引发类版本不兼容

解决方案

  1. 优先删除代码中spark.sparkContext.addJar("./hbase-spark-1.0.0.jar")这行,和--jars参数功能重复,易引发冲突
  2. 解决jar分发问题,二选一即可:
    • 先将hbase-spark-1.0.0.jar上传到HDFS的公共可访问路径,提交时将--jars参数改为--jars hdfs:///你的HDFS路径/hbase-spark-1.0.0.jar,YARN会自动将jar分发到所有Executor节点
    • 提交时直接用--packages org.apache.hbase.connectors.spark:hbase-spark:1.0.0替换--jars参数,Spark会自动拉取对应依赖并分发
  3. 若上述方案无效,检查打包配置:
    • 确认sbt的assembly打包规则没有排除org.apache.hbase.connectors.spark相关依赖
    • 若不想单独传外部jar,可通过sbt-assembly插件将hbase-spark依赖直接打入业务jar包,打包时注意将Spark、Hadoop原生依赖设为provided,避免和集群自带包冲突
  4. 核对集群HBase服务端版本,保证和你依赖的2.1.0完全一致,若为第三方发行版(如CDH、HDP),需替换为对应发行版的HBase依赖,避免类不兼容

内容的提问来源于stack exchange,提问作者pan jiayi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 03:57:03