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

Spark Session 2.2读取HDFS中Excel文件报错求助

解决Spark 2.2加载Excel时的NoSuchMethodError问题

这个NoSuchMethodError十有八九是POI依赖版本冲突导致的——Spark 2.2自带的POI版本和com.crealytics.spark.excel库依赖的POI版本不匹配,或者缺少了必要的POI扩展包。下面给你一步步解决的方案:

1. 确保使用适配Spark 2.2的spark-excel版本

Spark 2.2对应的spark-excel稳定版本是0.11.1,这个版本专门适配Spark 2.x系列,不要用更高版本(比如0.12+可能只支持Spark 3.x了)。

Maven依赖配置

<dependency>
    <groupId>com.crealytics</groupId>
    <artifactId>spark-excel_2.11</artifactId> <!-- 注意Scala版本,Spark 2.2一般搭配Scala 2.11 -->
    <version>0.11.1</version>
</dependency>

SBT依赖配置

libraryDependencies += "com.crealytics" %% "spark-excel" % "0.11.1"

2. 排除Spark自带的冲突POI依赖

Spark本身会内置旧版POI,会和spark-excel需要的版本冲突,所以要在构建工具里排除这些冲突依赖:

Maven排除示例

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-sql_2.11</artifactId>
    <version>2.2.0</version>
    <exclusions>
        <exclusion>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml-schemas</artifactId>
        </exclusion>
    </exclusions>
</dependency>

3. 优化你的加载代码

你代码里同时设置了location参数和load(pathFile),其实这两个是重复的,只需要保留一个即可,比如简化成:

Dataset<Row> df = session.read()
    .format("com.crealytics.spark.excel")
    .option("sheetName", "Feuil1")
    .option("useHeader", "true")
    .option("treatEmptyValuesAsNulls", "true")
    .option("inferSchema", "true")
    .option("addColorColumns", "false")
    .load("hdfs://your-namenode:9000/path/to/your/file.xlsx"); // 确保HDFS路径格式正确

注意HDFS路径要写完整,比如hdfs://namenode-host:port/xxx/xxx.xlsx,不要只写相对路径。

4. 打包时包含依赖(如果是提交集群运行)

如果是打包成JAR提交到Spark集群,要确保把spark-excel和POI的依赖都打包进去(可以用Maven的assembly-plugin或者SBT的sbt-assembly),避免集群节点缺少依赖。

按照这个步骤来,应该就能解决那个NoSuchMethodError的问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:27:38