【问题标题】:java.lang.NoClassDefFoundError - org/apache/spark/sql/hive/HiveContextjava.lang.NoClassDefFoundError - org/apache/spark/sql/hive/HiveContext
【发布时间】:2019-06-07 04:02:58
【问题描述】:

我正在尝试使用 Hive 上下文,但出现以下错误:

exception: java.lang.NoClassDefFoundError: org/apache/spark/sql/hive/HiveContext

有什么建议吗?

package com.mapr.examples;

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaSparkContext;

import org.apache.spark.sql.Row;
import org.apache.spark.sql.hive.HiveContext;

import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.function.*;
import org.apache.spark.sql.DataFrame;
import org.apache.spark.sql.SQLContext;
import static org.apache.spark.sql.functions.*;

import java.io.File;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

public class SparkSQLHiveContextExample {
    public static void main(String[] args) throws Exception {
        SparkConf sparkConf = new SparkConf().setAppName("SparkSQLHiveContextExample");
        JavaSparkContext ctx = new JavaSparkContext(sparkConf);

        // SQLContext sqlContext = new HiveContext(ctx); // exception: java.lang.NoClassDefFoundError: org/apache/spark/sql/hive/HiveContext
        // HiveContext hiveContext = new HiveContext(ctx.sc()); // exception: java.lang.NoClassDefFoundError: org/apache/spark/sql/hive/HiveContext
        // HiveContext hiveContext = new org.apache.spark.sql.hive.HiveContext(ctx.sc()); // exception: java.lang.NoClassDefFoundError: org/apache/spark/sql/hive/HiveContext


        ctx.stop();
        ctx.close();

    }
}

Pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.mapr.sample</groupId>
    <artifactId>SparkSQLExample</artifactId>
    <version>1.0-SNAPSHOT</version>

<dependencies>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.10</artifactId>
        <version>1.6.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-sql_2.10</artifactId>
        <version>1.6.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-hive_2.10</artifactId>
        <version>1.6.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-catalyst_2.10</artifactId>
        <version>1.6.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.hive</groupId>
        <artifactId>hive-jdbc</artifactId>
        <version>1.2.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.3.2</version>
    </dependency>
</dependencies>


    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

【问题讨论】:

  • 你明白java.lang.NoClassDefFoundError是什么意思吗?

标签: java maven apache-spark hive


【解决方案1】:

添加这个依赖后可以试试吗?

它应该可以工作。

maven link

【讨论】:

  • 我已将其添加为 jar 文件。我没有得到同样的错误。但是... HiveContext 似乎不再活跃。 Apache Spark 说它已被弃用。如果您在 IDE 上查看代码,您会注意到已弃用的警告。 spark.apache.org/docs/2.1.3/api/java/org/apache/spark/sql/hive/HiveContext.html
  • as a jar file 是什么意思?依赖pom.xml ?
  • 谢谢,你知道我应该改用什么,我只是尝试测试带有 hive 的 hadoop 集群是否工作,我不是 java 专家。
  • Maven 是一个构建自动化工具。当您触发名为 maven install 的操作时,您只需从 maven 存储库下载您在 pom.xml 中提到的相关 jar。使用 maven,您只需将 jars 添加到您的构建路径中,但是以更灵活的方式 :) 而且由于我的本地没有 maven 项目;从 maven repo 下载相关的 jar 文件并将其添加到我的构建路径似乎更快,所以我做到了:)
  • 我没有说像 mvn clean install 这样的东西会解决你的问题。我只是想说的是:你没有同样的错误。现在你有一个问题,因为 HiveContext 已被弃用。
猜你喜欢
  • 2016-09-08
  • 2018-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-10
  • 2020-08-31
相关资源
最近更新 更多