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

使用Java+Spark在Eclipse连接GCP Dataproc Hive Server报Hive类缺失错误

问题根因

报错的直接原因是你的pom.xml中spark-sql_2.11、spark-hive_2.11两个依赖的scope设置为了provided。该配置表示Maven仅在编译、测试阶段加载对应依赖,运行时默认认为目标环境已预装对应类包,不会将依赖打入最终产物。你当前在本地Eclipse环境直接启动应用,本地运行环境没有预装Spark Hive相关依赖,因此触发类找不到的异常。

解决方案

分两种场景处理:

本地调试场景

直接修改这两个依赖的scope配置,删除<scope>provided</scope>行,默认使用compile范围即可:

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-sql_2.11</artifactId>
    <version>2.4.7</version>
    <exclusions>
        <exclusion>
            <groupId>io.netty</groupId>
            <artifactId>netty-all</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-hive_2.11</artifactId>
    <version>2.4.7</version>
</dependency>

修改完成后刷新Maven依赖,重启应用即可解决报错。

打包提交到Dataproc集群运行场景

如果后续需要将应用打包上传到Dataproc集群运行,集群本身已内置Spark Hive相关依赖,为了避免依赖冲突,可以新增Maven profile区分本地和线上环境:

<profiles>
    <!-- 本地调试默认启用的profile -->
    <profile>
        <id>local</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <dependencies>
            <dependency>
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-sql_2.11</artifactId>
                <version>2.4.7</version>
                <exclusions>
                    <exclusion>
                        <groupId>io.netty</groupId>
                        <artifactId>netty-all</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-hive_2.11</artifactId>
                <version>2.4.7</version>
            </dependency>
        </dependencies>
    </profile>
    <!-- 提交到Dataproc集群时使用的profile -->
    <profile>
        <id>prod</id>
        <dependencies>
            <dependency>
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-sql_2.11</artifactId>
                <version>2.4.7</version>
                <scope>provided</scope>
                <exclusions>
                    <exclusion>
                        <groupId>io.netty</groupId>
                        <artifactId>netty-all</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-hive_2.11</artifactId>
                <version>2.4.7</version>
                <scope>provided</scope>
            </dependency>
        </dependencies>
    </profile>
</profiles>

本地调试默认使用local profile,线上打包时执行mvn package -Pprod即可。

额外注意事项

你使用的Spark 2.4.7版本对应Scala 2.11,要确保本地Eclipse运行环境的JDK版本为1.8,和pom.xml中配置的java.version保持一致,避免出现版本不兼容问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 08:45:04